显示一个正整数的所有素数因子
给定一个正整数,输出该数的所有素数因子,例如6的素数因子为2,3。
首先素数的概念是:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。代码实现:
public static boolean isPrime(int value) { boolean flag = true; if(value<2) flag = false; else { for(int i=2;i<value;i++) if(value%i==0) { flag = false; break; } } return flag; }
如果传入参数2,那么内部循环不符合条件,直接返回flag=true。大于2的正整数进入内部循环,进行判断。
计算出素数因子,首先随机生成一个正整数,每次i从2开始,判断该数是否是素数,如果是素数在判断是否是能被num整除,如果都满足输出i,num随后进行改变num=num/i;最后num变为1,所有结束条件是num>1.
int num = (int)(Math.random()*(1000))+2; System.out.println(num); int count = 1; while(num>1) { for(int i=2;i<=num;i++) { if(isPrime(i)&&(num%i==0)) { System.out.println(i+" "); num=num/i; count*=i; break; } } } System.out.println("\n"+count);
输出结果如下:
916
2 2 229
916
这里主要完成解决问题的思路,如果有错误,请大家多多指导,共同学习。
0条评论