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 5

5000
2 2 2 5 5 5 5

345678
2 3 17 3389

求所有质因子(Java)相关推荐

  1. Java实现 蓝桥杯 算法提高 Monday-Saturday质因子

    试题 算法提高 Monday-Saturday质因子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 这个问题是个简单的与数论有关的题目,看起来似乎是"求正整数的所有质因子 ...

  2. 求一个数的因子个数/因子和/质因子 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== ...

  3. 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    问题:把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 通俗易懂的 ...

  4. 【面试题视频讲解】求一个数的所有质因子

    P2求一个数的所有质因子 https://www.bilibili.com/video/av91892983?p=2

  5. 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~

    题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...

  6. 关于求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]互质, ...

  7. 等式(分解质因子求因子个数)

    链接: https://www.nowcoder.com/acm/contest/90/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  8. 数论:求一个数的因子专题(因子数,因子和,质因子)

    问题1-求n的因子数.因子和 输入一个正整数N,求出这个数字存在多少个因子,以及因子之和. 分析 既要求因子数,又要求因子和,因此我们要从1开始遍历一直到根号n,如果n%i==0,因子数+2,因子和要 ...

  9. 求n!中含有质因子p的个数

    定理:  中含有质因子p的个数为  ,其中  int cal(int n, int p) {int ans = 0;while (n != 0) {ans += n / p;n /= p; //相当与 ...

最新文章

  1. MySQL 学习笔记(13)— 创建表、修改表、删除表、清空表
  2. Java IO流 序列二:File类
  3. 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
  4. java与bartender_Java调取Bartender使用教程.md
  5. 嵌入式面试中常见的编程题目
  6. 简单复读机LR如何成为推荐系统精排之锋?
  7. 挑战程序设计竞赛_我系首次参加第六届中国大学生程序设计竞赛网络预选赛
  8. cass生成曲线要素文件_《CASS道路断面法施工技术》
  9. 锐龙r54600虚拟linux,锐龙r5 4600u相当于i几 游戏设备问题解决分享!
  10. JAVA集合一:ArrayList和LinkedList
  11. 四、时间 .认知 .迭代
  12. lvremove 删除逻辑卷
  13. Hive窗口分析函数(案例详细讲解)
  14. 流形学习t-SNE,LLE,Isomap
  15. python读取math_python调用通达信公式,python读取通达信公式结果
  16. 易语言文件夹加密解密助手
  17. CE找基址及偏移教程 外挂必学
  18. 计算机台式内存条,台式电脑怎么装内存条_台式电脑加装内存条方法-win7之家
  19. 662X芯片,662X三极管,贴片3.3V稳压IC规格书
  20. UEBA对抗威胁之“健康就是财富”!

热门文章

  1. 微信小程序商城开发-商品详情页跳转购物车
  2. linux中来宾用户权限,linux权限分配
  3. 连行为艺术家都开始直播带货了
  4. netty学习01--nio与oio的比较
  5. Microsoft Web Farm Framework (WFF) 2.0正式发布
  6. 《异常点检测》 - 第十章阅读记录 - 离散序列的异常点检测
  7. 关于爬取今日头条图片中的链接的提取(ajax)
  8. Spark大数据分析案例之平均心率检测[2021]
  9. 漏洞管理平台-洞察贰
  10. 恶意软件Emotet卷土重来滥用.LNK文件进行攻击,你只需要一项技术就能有效保护组织