[數論]唯一分解定理
阿新 • • 發佈:2019-01-03
/* Name:唯一分解定理 Actor:HT Time:2015年8月11日 Error Reporte: */ #include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> using namespace std; //任意整數可以化為一組素數積 //n = p1^a1 * p2^a2 * p3^a3 ... ... int prise[1000]; int gdd[1000]; int eq[1000]; int sum; void fun(int a) { int i, j; for (i = 2; i*i <= a; i++) { if (prise[i] != 0) continue; for (j = i; i*j <= a; j++) { prise[i*j] = 1; } } sum = 0; memset(eq, 0, sizeof(eq)); for (i = 2; i <= a; i++) if (prise[i] == 0) { if (a%i == 0) { gdd[sum] = i; while (a%i == 0) { a /= i; eq[sum]++; } sum++; } } } int main() { int a; L: scanf("%d", &a); fun(a); int i; for (i = 0; i < sum; i++) { printf("%d ^ %d\n", gdd[i], eq[i]); } //goto L; }