将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
//前天把科三考过了 很开心 驾照到手了 出去庆祝了一番
看到这个题理下思路
1)如果这个质数恰等于x,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>x,但n能被x整除,则应打印出x的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被x整除,则用x+1作为x的值,重复执行第一步。
我 先写出的代码是
Scanner in=new Scanner(System.in);
system.out.println("请输出一个正整数");
int number= in.nextInt();
int x=2;
while(number<>x){
if(number%x==0){
number=number/x;
system.out.println(x)
}
if(a%x<>0){
x=x+1;
}
}
结果为
90
2
3
3
发现 不仅格式与题目要求的不符合,而且少输出了一个因子,后来发现当我的number=x时 他就跳出循环了 于是没有输出最后那个因子 ,于是我修正了代码 在循环外 再加一个输出语句 便完成了
关于格式的问题 我发现自己一直用的println 后面换成了print 便可以符合题目要求
最后 依照惯例 我们来欣赏下大神的代码
public static void main(String[] args) { System.out.print("请输入一个你要分解的正整数:"); Scanner scanner=new Scanner(System.in); int input=scanner.nextInt();//获取输入的数字 System.out.println(); System.out.print(input+"="); for (inti = 2; i < input+1; i++) {
while(input%i==0&&input!=i) { input=input/i; System.out.print(i+"*"); } if(input==i){//上面的都不能整除,说明这是一个质数 System.out.print(i); break; } } scanner.close(); }
|