为什么求不出来90的质因数

img


我刚接触c语言,不熟练,希望有人能告诉我我的程序哪里错了为什么输出不了90的质因数。

img

其实求质因数没有那么麻烦,甚至都不用判断质数

#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,以正确输出质因数。

这样修改后的代码就能正确输出输入整数的质因数了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^