Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1k1×p2k2×⋯×pmkm. 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 |
Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291
题目大意
给你一个正整数,你要用其素数因子组合成如上所述的式子,并使其值与该正整数相同
要求:尽可能的使用较小的素数因子
注意输入为1时,输出为 1 = 1 (测试点3)
思路
先打一个素数表,然后逐个判断过来即可
C/C++
#include<iostream>
using namespace std;
int main()
{
bool apr[202322];
int prime[202322],N=0;
for(int z=2;z<202322;z++){
if(!apr[z]){
prime[N++] = z;
long key = z;
while(key<202322){
apr[z] = true;
key+=z;
}
}
}
long num,output=0;
cin >> num;
cout << num << "=";
if(num==1) cout << 1;
for(int z=0;num!=0 && z<N;z++){
long key = 0;
while(num!=0 && num%prime[z]==0){
num /= prime[z];
key++;
}
if(key>0){
if(output) cout << "*";
if(key==1) cout << prime[z];
else printf("%ld^%ld",prime[z],key);
output = 1;
}
}
return 0;
}