将一个正整数分解质因数。例如:输入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时 他就跳出循环了 于是没有输出最后那个因子  ,于是我修正了代码 在循环外 再加一个输出语句 便完成了

将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

关于格式的问题 我发现自己一直用的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();

    }