zoukankan      html  css  js  c++  java
  • java_分解质因数

    题目内容:

    每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。

    现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。

    输入格式:

    一个整数,范围在[2,100000]内。

    输出格式:

    形如:

    n=axbxcxd

    n=n

    所有的符号之间都没有空格,x是小写字母x。

    输入样例:

    18

    输出样例:

    18=2x3x3

    时间限制:500ms内存限制:32000kb
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub        
            Scanner in = new Scanner(System.in);
            
            int n;//输入整数
            int nCopy;//复制n的值
            int prime=2;//素数,第一个是2
            int count=0;//输出质因数个数
            
            n=in.nextInt();
            
            if(prime(n)) 
            {
                System.out.printf("%d=%d
    ",n,n);//n=n
            }
            else
            {
                System.out.printf("%d=",n);//n=?
                
                nCopy=n;
                
                while(nCopy>1)
                {
                    if(nCopy%prime==0)
                    {
                        if(count>0)
                        {
                            System.out.print("x");
                        }
                        nCopy=nCopy/prime;
                        System.out.print(prime);
                        count++;
                    }
                    else
                    {
                        prime++;//跳过当前素数
                        prime=nextPrime(prime);//下一个素数
                    }
                }
                
                System.out.printf("
    ");//换行
                
            }
        }
        
        public static boolean prime(int n)//判断是否素数
        {
            boolean isPrime=true;//假设n是素数
            if(n==1||(n%2==0&&n!=2))//判断1和非2偶数
            {
                isPrime=false;
            }
            else if(n==2)//判断2
            {
                isPrime=true;
            }
            else//判断其他
            {
                for(int i=3;i<Math.sqrt(n);i=i+2)
                {
                    if(n%i==0)
                    {
                        isPrime=false;
                        break;
                    }
                }
            }
            
            return isPrime;
        }
        
        public static int nextPrime(int n)//找下一个素数
        {
            while(true)
            {
                if(prime(n))//如果n是素数,返回n
                {
                    return n;
                }
                else//如果不是,n自增,再判断
                {
                    n++;
                }
            }
        }
    }
    

      

     
  • 相关阅读:
    (7)常量和变量
    (6)python基础数据类型
    PEP8规范
    (5)原码反码补码
    (4)二八十六进制转换
    (3)你的第一个python程序
    (2)python开发环境搭建
    几种常见的开发语言对比
    (1)python的基础认知
    (25)线程---local数据隔离
  • 原文地址:https://www.cnblogs.com/dreamshows/p/10080830.html
Copyright © 2011-2022 走看看