/*
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;
}
[数论]唯一分解定理
最新推荐文章于 2019-12-01 09:49:52 发布