问题遇到的现象和发生背景
从标准输入读取一个整数n(1<n<32767),将n分解为质数幂的乘积,将结果打印到标准输出上。分解式中的质数按从小到大的顺序输出。例如,当输入数据为60时,程序应输出:60=223*5。(输出超限)
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
#include<math.h>
int main()
{
int n, a[100], count = 0, count1 = 0, b[100], count2 = 0;
scanf_s("%d", &n);
int m = n;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
a[count] = i;
count++;
}
}
for (int i = 0; i < count; i++)
{
count1 = 0;
for (int j = 2; j < a[i]; j++)
{
if (a[i] % j == 0)
{
count1++;
break;
}
}
if (count1 == 0)
{
b[count2] = a[i];
count2++;
}
}
printf("%d=", n);
printf("%d", b[0]);
int f = n / b[0];
while (f % b[0] == 0)
{
printf("*%d", b[0]);
f /= b[0];
}
int i = 1;
while (i<count2) {
while (n % b[i] == 0)
{
printf("*%d", b[i]);
n /= b[i];
}
i++;
}
return 0;
}
运行结果及报错内容
输出超出限制