翁恺JAVA零基础第七周函数第一题 分解质因数

由于慕课的课后测验没有答案。
自己写的代码不知道正确不正确,所以详情各位亲们看一下
题目如图
自己的思路是先判断是否为质数,是质数就直接输出了,没啥好说的。
如果是非质数的话,先求该数字之前有多少个质数(多少个相当于质数数组的长度)。
然后把这些质数丢进一个数组里。
再通过将输入的数字对数组里的质数一个一个匹配,如果能够被数组里的某个质数整除,则输出该质数,然后将数组的序号初始化为1.
当数字自己最后除成了质数时,将最后的质数作为最后一位进行输出。

img


```java
package homework;

import java.util.Scanner;

public class The_7th_week_Composite {
    
    //判断是否为质数
    public static boolean Isprime( int a )
    {
        boolean prime = true;
        int n;
        
        n = (int)Math.sqrt(a);
        
        for ( int i = 2 ; i <= n; i++)
        {
            if ( a % i == 0)
            {
                prime = false;
            }
        }
        
        return prime;
    }
    
//    分解质因数
    public static void resolve_number( int number )
    {
//        求出非质数number前有多少个质数
        int length_prime = 1;
        boolean is_prime = true;
        for ( int i = 3; i <= number ; i++)
        {
            is_prime = true;
            for ( int j = 2; j < i ; j++)
            {
                if ( i % j == 0)
                {
                    is_prime = false;
                }
            }
            if ( is_prime == true)
            {
                length_prime += 1;
            }
        }
        int[] resolge_prime = new int[length_prime];
        int serial = 0;
        
//        将number前的所有质数归成数组
        for ( int i = 2; i <= number ; i++)
        {
            is_prime = true;
            for ( int j = 2; j < i ; j++)
            {
                if ( i % j == 0)
                {
                    is_prime = false;
                }
            }
            if ( is_prime == true)
            {
                
                resolge_prime[serial] = i;
                serial += 1;
                
            }
            
        }
        
//        开始打印分解质因数
        System.out.print(number + " = ");
        int count;
//        若可以被数组中的质数整除则打印该质数并将数组序号初始化为0
//        否则序号+1尝试是否可以被下一个质数整除
        for ( count = 0;number != resolge_prime[count];)
        {
            if ( number % resolge_prime[count] == 0 )
            {
                System.out.print(resolge_prime[count]);
                number = number / resolge_prime[count];

                System.out.print("*");

                count = 0;
            }
            else
            {
                count += 1;
            }
            
        }
        if ( number == resolge_prime[count] )
        {
            System.out.print(resolge_prime[count]);
        }
                    
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        int Composite = scan.nextInt();
        while ( Composite > 100000 || Composite < 2)
        {
            System.out.print("请输入大于等于2小于等于100000的数字:");
            Composite = scan.nextInt();
        }
        
        if ( Isprime(Composite) == false )
        {
            resolve_number(Composite);
        }
        else
        {
            System.out.println( Composite + " = " + Composite);
        }
        
        
        scan.close();
    }

}


```

你不审题呀
告诉你乘号用小写的x,你为什么还输出星号
正确不正确你不知道自己执行一下看看结果吗