求12和6的公约数除了1和自身

img

img


我刚接触c语言,不熟练,希望有人能告诉我这个程序哪里错了,为什么输出的i是4和5而不是2和3


if(a%i==0&&b%i==0)

【以下回答由 GPT 生成】

问题出在for循环的判断条件上。目前的代码中使用的是i <= num1 && i <= num2作为判断条件,这会导致循环的次数超过了实际需要的次数。

可以通过修改判断条件来解决这个问题。具体来说,应该使用i <= num1 || i <= num2作为判断条件,这样循环只需要进行到较小的那个数的大小即可。

以下是修改后的代码:

#include <stdio.h>

int main()
{
    int num1 = 12;
    int num2 = 6;

    for (int i = 2; i <= num1 || i <= num2; i++) {
        if (num1 % i == 0 && num2 % i == 0) {
            printf("%d ", i);
        }
    }

    return 0;
}

运行这段代码,输出结果将会是2和3,与期望结果一致。



【相关推荐】



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