其实求质因数没有那么麻烦,甚至都不用判断质数
#include <stdio.h>
int main()
{
int x, n = 0;
scanf("%d", &x);
int y = x;
int arr[100];
int flag = 1;
while (flag)
{
flag = 0;
for (int i = 2; i < y; i++)
{
if (y % i == 0)
{
arr[n++] = i;
y = y / i;
flag = 1;
break;
}
}
if (!flag) arr[n++] = y;
}
printf("%d = ", x);
for (int i = 0; i < n; i++)
{
if (i != 0) printf(" * ");
printf("%d", arr[i]);
}
return 0;
}
【以下回答由 GPT 生成】
问题的主要原因在于变量C
没有被赋值。以下是对代码的逐步分析和修改建议:
#include<stdio.h>
int main() {
int x, C, sum=1, i;
printf("请输入一个整数: ");
scanf("%d", &x);
printf("你输入的整数是:%d\n", x);
for(i = 2; i <= x; i++) {
int isPrime = 1;
for(int j = 2; j < i; j++) {
if(i % j == 0) {
isPrime = 0;
break;
}
}
if(isPrime == 1) {
if(x % (sum * i) == 0) {
printf("%d是%d的质因数\n", i, x);
}
}
}
return 0;
}
在修改后的代码中,主要的修改是将C
变量改为了x
,因为我们想要求解x
的质因数而不是90的质因数。同时,在第一个循环中,i
从2一直遍历到x
,而不是C
。此外,还需要将printf
语句中的常数90改为变量x
,以正确输出质因数。
这样修改后的代码就能正确输出输入整数的质因数了。
【相关推荐】