1059 Prime Factors

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<iostream>
#include<vector>
#include<cstdio>
using namespace std;
vector<int>prime(500000, 1);
int main()
{
    //素数表
    for (int i = 2; i*i < 500000; i++) {
        for (int j = 2; j*i < 500000; j++) {
            prime[i*j] = 0;
        }
    }
    long int a;
    cin >> a;
    cout << a << "=";
    if (a == 1) {
        cout << "1";

        return 0;
    }
    bool status = false;
    for (int i = 2; a >= 2; i++) {
        int cnt = 0;
        bool flag = false;
        while (prime[i] == 1 && a%i == 0) {   //质数,整除
            a = a / i;
            cnt++;
            flag = true;
        }
        if (flag) {
            if (status)cout << "*";
            cout << i;
            status = true;
        }
        if (cnt > 1) {
            cout << "^" << cnt;
        }
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/ssf_cxdm/article/details/82054981