1059 Prime Factors(25 分)(C++)

Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p​1​​​k​1​​​​×p​2​​​k​2​​​​×⋯×p​m​​​k​m​​​​.

Input Specification:

Each input file contains one test case which gives a positive integer N in the range of long int.

Output Specification:

Factor N in the format N = p​1​​^k​1​​*p​2​​^k​2​​**p​m​​^k​m​​, where p​i​​'s are prime factors of N in increasing order, and the exponent k​i​​ is the number of p​i​​ -- hence when there is only one p​i​​, k​i​​ is 1 and must NOT be printed out.

Sample Input:

97532468

Sample Output:

97532468=2^2*11*17*101*1291

题目大意:将一个数分解为若干素数之积;

解题思路:建立素数表

#include<vector>
#include<iostream>
using namespace std;
std::vector<int> prime(500000,1);
int main()
{   int i,j=2;
    for(i=2;i*j<500000;i++)
        for(j=2;i*j<500000;j++)
            prime[i*j]=0;
    long int a;
    scanf("%ld",&a);
    printf("%ld=",a);
    if(a==1)
        cout<<1;
    int k=2,flag=0;
    while(a!=1){
        int cnt=0;
        while(prime[k]!=0&&a%k==0){
            cnt++;
            a=a/k;
        }
        if(cnt!=0){
            if(flag==1)
                printf("*");
            printf("%d",k);
            flag=1;
        }
        if(cnt>1)
            printf("^%d",cnt);
        k++;
    }
    system("pause");
}

猜你喜欢

转载自blog.csdn.net/qq_41562704/article/details/82215620