牛客网力扣算法编程之十八 | 排序 - 质数因子 - Java代码实现
【算法编程】质数因子一. 题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )数据范围:输入描述:输入一个整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1输入:180输出:2 2 3 3 5二. 解题思路总结:三. 代码如下:import java.util.Scanner
【算法编程】质数因子
一. 题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围:
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例1
输入:
180
输出:
2 2 3 3 5
二. 解题思路总结:
1.循环次数仅需取num的平方根即可;
2.从2开始除,如果除以0求余为0,打印输出并继续循环,直到不等于0,跳出当前while循环,继续for循环;打印后,num记得重新赋值num=num/i;
3.如果输入num最终变成了1 ,直接打印"";否则他本身就是一个质数,前面没有打印除任何内容,打印他自己即可。
三. Java代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
while(sc.hasNext()) {
long num=sc.nextLong();
long k=(long) Math.sqrt(num); //循环次数仅需取num的平方根即可
for (int i = 2; i <= k; i++) { //从2开始除
while (num%i==0) { //除以0求余为0,继续循环,直到不等于0
System.out.print(i+" ");
num/=i; //打印后,num重新赋值
}
}
String s= num==1?"":num+" "; //如果输入num最终变成了1 ,直接打印""
System.out.println(s); //否则他就是一个质数,前面没有打印除任何内容,打印他自己即可
}
}
}
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐



所有评论(0)