zoukankan      html  css  js  c++  java
  • 分解质因数——mooc《零基础学Java语言》-(浙大翁凯)第七周编程题(1)

    题目内容:

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

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

    输入格式:

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

    输出格式:

    形如:

    n=axbxcxd

    n=n

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

    输入样例:

    18

    输出样例:

    18=2x3x3

    时间限制:500ms内存限制:32000kb
     
    代码实现:
    /*
    分解质因数(5分)
    题目内容:
    每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,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 分解质因数 {
        public static boolean isprime(int i) //判断素数函数
        {
            boolean isprime=true;
            for(int j=2;j<i;j++) 
            {
                if(i%j==0) 
                {
                    isprime=false;
                    break;
                }
            }
            return isprime;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();
            int count=0;
            int[] array=new int[n];
            if(isprime(n)==true) //调用判断素数函数
            {
                System.out.println(n+"="+n);//输入的数值为素数时,输出n=n
            }
            else //输入数值为合数时
            {
                for(int i=2;i<n;i++) //将小于n的素数存入数组中
                {
                    if(isprime(i)==true) 
                    {
                        array[count]=i;
                        count++;
                    }
                }
                System.out.print(n+"=");
                for(int i=0;i<n;i++) 
                {
                    while(n%array[i]==0) 
                    {
                        n/=array[i];
                        if(n==1) 
                        {
                            System.out.print(array[i]);
                        }
                        else 
                        {
                            System.out.print(array[i]+"x");
                        }
                    }
                    if(n==1) 
                    {
                        break;
                    }
                }
            }
    
        }
    
    }
    吾生也有涯,而知也无涯
  • 相关阅读:
    Android 8.0编译过程
    Ubuntu下映射网络驱动器
    Android 指定调用已安装的某个“相机”App
    sendMessage 与 obtainMessage (sendToTarget)比较
    Linux tee命令
    Android P(9.0) userdebug版本执行adb remount失败
    adb shell get/setprop, setenforce...
    Bluedroid: 蓝牙协议栈源码剖析
    android o logcat read: unexpected EOF!
    Winform 打包 混淆 自动更新
  • 原文地址:https://www.cnblogs.com/daimasanjiaomao/p/10939273.html
Copyright © 2011-2022 走看看