蓝桥杯-8-1因式分解(java)

来源:互联网 发布:c语言memset头文件 编辑:程序博客网 时间:2024/05/21 06:53
                  算法提高 8-1因式分解              时间限制:10.0s   内存限制:256.0MB            问题描述              设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。            样例              与上面的样例输入对应的输出。              例:            数据规模和约定              输入数据中每一个数在int表示范围内。
    import java.math.BigInteger;      import java.util.*;        public class Main {            public static void main(String args[]){              Scanner in=new Scanner(System.in);               int n=in.nextInt();            if(isPrime(n)){                System.out.println(n);            }else{                boolean flag=true;                while(n%2==0){//减少运算时间                    if(flag){                        System.out.print(2);                        flag=false;                    }                    else{                        System.out.print("*2");                    }                    n/=2;                }                     while(n!=1){//结束标志,注意不是0                        for(int i=3;;i+=2){                    if(isPrime(i) && n%i==0){                        if(flag){                            System.out.print(i);                            flag=false;                        }else{                            System.out.print("*"+i);                         }                        n/=i;                             break;                    }                     }              }            }          }           public static boolean isPrime(int a){//判断素数函数              if(a==2)                  return true;              if(a%2==0){                  return false;              }              boolean flag=true;              for(int i=3;i<=Math.sqrt(a);i+=2){                  if(a%i==0){                      flag=false;                      break;                  }              }              return flag;          }      }    
0 0