从标准输入读取一个整数n(1
#include
#include
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 (iwhile (n % b[i] == 0)
{
printf("*%d", b[i]);
n /= b[i];
}
i++;
}
return 0;
}
输出超出限制
这个应该不需要这么麻烦 可以这么做你只要找到它的第一个质因数 然后除以这个质因素后开始再找第一个质因数不断分解就行了