【算法编程】质数因子

一. 题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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);      //否则他就是一个质数,前面没有打印除任何内容,打印他自己即可
	  }
	}
}
Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐