求所有质因子(Java)
CSDN话题挑战赛第2期
参赛话题:算法题解
1.题目描述
一个合数可以表示成若干个质数相乘的形式,比如21=3×7,18=2×3×3,这些质数被称为它的质因子。
给定一个合数n(n≤2^31-1),求出它的所有质因子。格式
输入格式
输入只有一行,就是一个正整数n输出格式
输出一行,n所有的质因子,中间用空格分隔,质因子必须按照升序排列样例
输入样例
30
输出样例
2 3 5
2.题目链接
172.22.114.196
3.思路讲解
从i = 2开始进行循环,如果n除以 i 余数为0,则继续除以i ,直到 n % i 不等于0。然后i++,一直到i = n结束。
除此之外,每次i++不需要再判断 i 是否为素数,能整除的只能是素数。
4.代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = n,flag = 0;for(int i = 2;i <= m;i++) {if(n % i == 0) {while (n % i == 0) {if(flag == 0) {System.out.print(i);flag = 1;}else {System.out.print(" " + i);}n /= i;}}}scanner.close();}
}
5.感想
本题是一道很简单的算法题,难度不大。
但是我之前一直纠结于判断i是否为素数,采用了两种不同的方法。一次超时,一次超内存。
public class Test01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = n,flag = 0;for(int i = 2;i <= m;i++) {int isPrime = 1;for(int j = 2;j*j <= i;j++) {if(i % j == 0) {isPrime = 0;break;}}if(isPrime == 1 && n % i == 0) {//System.out.println("i = " + i + " n = "+ n);while (n % i == 0) {if(flag == 0) {System.out.print(i);flag = 1;}else {System.out.print(" " + i);}n /= i;}}}scanner.close();} }
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = n,flag = 0;int[] isPrime = new int[n+5];//prime-0for(int i = 2;i*i <= n;i++) {if(isPrime[i] == 0) {for(int j = 2;j*i < n+5;j++) {isPrime[i*j] = 1;}}}isPrime[1] = 1;isPrime[2] = 0;for(int i = 2;i <= m;i++) {if(isPrime[i] == 0 && n % i == 0) {//System.out.println("i = " + i + " n = "+ n);while (n % i == 0) {if(flag == 0) {System.out.print(i);flag = 1;}else {System.out.print(" " + i);}n /= i;}}}scanner.close();} }
这里再提供一些测试数据:
100
2 2 5 55000
2 2 2 5 5 5 5345678
2 3 17 3389
求所有质因子(Java)相关推荐
- Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
试题 算法提高 Monday-Saturday质因子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 这个问题是个简单的与数论有关的题目,看起来似乎是"求正整数的所有质因子 ...
- 求一个数的因子个数/因子和/质因子 C/C++实现
求一个数的因子个数时间复杂度O√n ll get_number(ll x){ll num=0;for(ll i=1;i*i<=x;i++){if(x%i==0) num+=2; if(i*i== ...
- 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
问题:把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 通俗易懂的 ...
- 【面试题视频讲解】求一个数的所有质因子
P2求一个数的所有质因子 https://www.bilibili.com/video/av91892983?p=2
- 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~
题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...
- 关于求1~n中与m互质的数的个数(容器原理+数论分解质因子)
D. Count GCD 这道题严格来讲不难,a[i]与b[i+1]最大公约数为a[i+1],所以a[i]与b[i+1]必定整除a[i+1],且a[i]/a[i+1]与b[i+1]/a[i+1]互质, ...
- 等式(分解质因子求因子个数)
链接: https://www.nowcoder.com/acm/contest/90/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...
- 数论:求一个数的因子专题(因子数,因子和,质因子)
问题1-求n的因子数.因子和 输入一个正整数N,求出这个数字存在多少个因子,以及因子之和. 分析 既要求因子数,又要求因子和,因此我们要从1开始遍历一直到根号n,如果n%i==0,因子数+2,因子和要 ...
- 求n!中含有质因子p的个数
定理: 中含有质因子p的个数为 ,其中 int cal(int n, int p) {int ans = 0;while (n != 0) {ans += n / p;n /= p; //相当与 ...
最新文章
- MySQL 学习笔记(13)— 创建表、修改表、删除表、清空表
- Java IO流 序列二:File类
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
- java与bartender_Java调取Bartender使用教程.md
- 嵌入式面试中常见的编程题目
- 简单复读机LR如何成为推荐系统精排之锋?
- 挑战程序设计竞赛_我系首次参加第六届中国大学生程序设计竞赛网络预选赛
- cass生成曲线要素文件_《CASS道路断面法施工技术》
- 锐龙r54600虚拟linux,锐龙r5 4600u相当于i几 游戏设备问题解决分享!
- JAVA集合一:ArrayList和LinkedList
- 四、时间 .认知 .迭代
- lvremove 删除逻辑卷
- Hive窗口分析函数(案例详细讲解)
- 流形学习t-SNE,LLE,Isomap
- python读取math_python调用通达信公式,python读取通达信公式结果
- 易语言文件夹加密解密助手
- CE找基址及偏移教程 外挂必学
- 计算机台式内存条,台式电脑怎么装内存条_台式电脑加装内存条方法-win7之家
- 662X芯片,662X三极管,贴片3.3V稳压IC规格书
- UEBA对抗威胁之“健康就是财富”!
热门文章
- 微信小程序商城开发-商品详情页跳转购物车
- linux中来宾用户权限,linux权限分配
- 连行为艺术家都开始直播带货了
- netty学习01--nio与oio的比较
- Microsoft Web Farm Framework (WFF) 2.0正式发布
- 《异常点检测》 - 第十章阅读记录 - 离散序列的异常点检测
- 关于爬取今日头条图片中的链接的提取(ajax)
- Spark大数据分析案例之平均心率检测[2021]
- 漏洞管理平台-洞察贰
- 恶意软件Emotet卷土重来滥用.LNK文件进行攻击,你只需要一项技术就能有效保护组织