标签:turn write pts ott spec int col which one
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????.
Each input file contains one test case which gives a positive integer N in the range of long int.
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.
97532468
97532468=2^2*11*17*101*1291
#include<cstdio> #include<cmath> const int maxn = 100010; bool is_prime(int n){ if(n == 1) return false; int sqr = (int)sqrt(1.0*n); for(int i = 2; i <= sqr; i++){ if(n % i == 0) return false; } return true; } int prime[maxn],pNum = 0; void Find_prime(){ for(int i = 1 ; i < maxn; i++){ if(is_prime(i) == true){ prime[pNum++] = i; } } } struct facot{ int x,cnt; }fac[10]; int main(){ Find_prime(); int n; scanf("%d",&n); int num = 0; if(n == 1) printf("1=1"); else{ printf("%d=",n); int sqr = (int)sqrt(1.0*n); //printf("prime[0]"); for(int i = 0; i < pNum ; i++){ //printf("%d",i); if(n % prime[i] == 0){ fac[num].x = prime[i]; fac[num].cnt = 0; while(n % prime[i] == 0){ fac[num].cnt++; n /= prime[i]; } num++; } if(n == 1) break; } if(n != 1){ fac[num].x = n; fac[num].cnt = 1; } //printf("1\n"); for(int i = 0; i < num; i++){ if(i > 0) printf("*"); printf("%d",fac[i].x); if(fac[i].cnt > 1) printf("^%d",fac[i].cnt); } } return 0; }
标签:turn write pts ott spec int col which one
原文地址:https://www.cnblogs.com/wanghao-boke/p/9532827.html