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

    Description

    每一个大于等于2的自然数,均可写成一个或多个质数的乘积,例如:

    2=2
    
    20=2*2*5
    

    这种将一个整数分割成若干个质数之积的操作叫做分解质因数。现在,给你一个整数N,请你编写一个程序,对其分解质因数。

    Input Format

    输入为一行,正整数N,保证1<N<2147483647

    Output Format

    输出N的质因数分解形式,格式为 N=P1(E1)P2(E2)P3(E3).... 其中,P1、P2、P3、……为组成N的各个质因子,

    满足P1 < P2 < P3 < ...;E1、E2、E3、……分别为P1、P2、P3、……在N中的指数。

    例如:

    20=2*2*5
    

    应该输出成:

    20=2(2)5(1)
    

    Hint

    N的大于sqrt(N)的质因子至多有一个。(sqrt(n)指N的开方取整)

    Sample Input

    20
    

    Sample Output

    20=2(2)5(1)
    

    #include<iostream>
    using namespace std;
    
    bool mark[5000001];
    int prime[5000001];
    int num[5000001]={0};
    int primesize;
    void init()
    {
        int i,j;
        primesize=0;
        for(i=2;i<=5000000;i++)
        {
            if(mark[i]==true) continue;
            prime[primesize++]=i;
            if(i>=10000) continue;
            for(j=i*i;j<=5000000;j+=i)
            {
                mark[j]=true;
            }
        }
    }
    
    int main()
    {
        init();
        int n;
        cin>>n;
        cout<<n<<"=";
        for(int i=0;i<primesize;i++){
            if(n%prime[i]==0){
                do{
                    n=n/prime[i];
                    num[i]++;
                }while(n%prime[i]==0);
            }
        }
        for(int i=0;i<primesize;i++){
            if(num[i]!=0){
                cout<<prime[i]<<"("<<num[i]<<")";
            }
        }
        return 0;
    }


    总是有两个用例通不过,很奇怪。
  • 相关阅读:
    Python 执行主程序
    Python 3.0 写日志时出现乱码
    验证文件下载成功
    selenium 校验文件下载成功
    java中Proxy(代理与动态代理)
    简易计算器
    Python正则
    Python logger 没打出行数
    Python logger /logging
    Python configparser 读取指定节点内容失败
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/7845493.html
Copyright © 2011-2022 走看看