您的位置:首页 > 其它

2-07. 素因子分解(20)

2014-10-18 19:50 190 查看
2-07. 素因子分解(20)

# include <stdio.h>
# include <math.h>
int check(int n)
{
int i;
for(i = 3; i <= sqrt(n); i ++)
{
if(! (n % i))
return 0;
}
return 1;
}

int s[300];
int main()
{
long int N, n;
int i, j, cou=1;
int r[300]={0};

scanf("%ld",&N);
if(N == 1)
{
printf("1=1\n");
return 0;
}
else
n = N;

s[0] = 2;//get 素数集
for(i = 3; i < 1500; i += 2)
{
if( check(i))
{
s[cou ++] = i;
}
}

for(i = 0; n != 1; )//拆分
{
if(! (n%s[i]) )
{
r[i] ++;
n = n/s[i];
}
else
{
i ++;
}
}

printf("%ld=",N);//格式输出
for(j = 0; j < 300; j ++)
{
if(r[j] == 0)
continue;
else
{
if(j == i)//最后一位,没有*号
{
if(r[j] == 1)
printf("%d",s[j]);
else
printf("%d^%d",s[j],r[j]);
}
else//非最后一位
{
if(r[j] == 1)
printf("%d*",s[j]);
else
printf("%d^%d*",s[j],r[j]);
}
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: