Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291
#include#include #include #include using namespace std; const int maxn = 100010; bool isPrime(int n) { if (n <= 1) return false; int Sqrt = (int)sqrt(1.0 * n); for (int i = 2;i <= Sqrt;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 (isPrime(i) == true) { prime[pNum++] = i; } } } struct factor { int x, cnt; }fac[10]; int main() { Find_Prime(); int n, num = 0; cin >> n; if (n == 1) cout << "1=1"; else { cout << n << "="; int Sqrt = (int)sqrt(1.0 * n); //枚举根号n以内的质因数 for (int i = 0;i < pNum && prime[i] <= Sqrt;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; } //按格式输出结果 for (int i = 0;i < num;i++) { if (i > 0) printf("*"); cout << fac[i].x; if (fac[i].cnt > 1) { cout << "^" << fac[i].cnt; } } } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)