从标准输入读取一个整数n(1<n<32767),将n分解为质数幂的乘积,将结果打印到标准输出上。分解式中的质数按从小到大的顺序输出。例如,当输入数据为60时,程序应输出:60=2×2×3×560=2×2×3×5。
输入数据
输入为一个大于2的自然数
输出数据
输出为自然数的素因子乘积
代码
#include<stdio.h>
int main()
{
long int a, b = 0, c, str[5000], i, v = 0, h = 0, k = 0;
scanf("%ld", &a);
long int t = a;
for (int i = 1; i <= a; i++)
if (a % i == 0) b++;//计算因子的个数
if (b == 2) printf("%ld=%ld", a, a);//如果因数的个数只有两个,那么a是质数,且1不是质数,所以只需要输出a自己
else {
for (i = 2; i <= a; i++)
{
for (long int j = 1; j <= i; j++)
if (i % j == 0) v++;
if (v == 2)
{ str[h] = i;
h++; }
v = 0;
}//在2到a中找到所有质数存储到数组上
printf("%ld=", a);
while (t != 1)
{
while (t % str[k] == 0)
{ printf("%ld", str[k]);
t = t / str[k];
if (t != 1)printf("*"); }
k++;
}//找到质数中所有a的因数
}
}