使用While循环查找数字的最小除数

时间:2019-02-25 22:10:21

标签: c while-loop

我一直在使用“ C How to Program”教科书再次学习C编程。作为本文中的一项练习,系统提示我查找用户提供的数字的最小除数。为了澄清,以防万一,如果除数导致余数为0,则数字为除数,而我们正在寻找除数大于1的除数。要完成此操作,它指示我应该使用while循环。我刚刚开始使用while循环,所以我了解基本思想和功能,但不完全了解如何在这种情况下正确执行所有操作。看这个例子可以使我更好地理解。我认为我应该创建一些寻找除数的代码,直到发现一个除数为止。感谢您提供的任何帮助。非常感谢。

最诚挚的问候!

1 个答案:

答案 0 :(得分:1)

要找到最小的除数,您需要检查从2到n的数字除法,得出除数为0的余数。请参见下面的实现:

int n, i;
scanf("%d", &n);

i = 2;
while(i <= n){
    if(n % i == 0){
        printf("The smallest number is %d\n", i);
        break;
    }
    i++;
}

但是您可以更有效地做到这一点。您实际上不需要遍历n。遍历n平方根足以找到它。如果遍历到n平方根之后没有找到最小的数字,则意味着最小的数字是n本身。请参见下面的实现。

#include <stdio.h>
#include <math.h>

int main()
{
    int n, i, sq;
    scanf("%d", &n);

    i = 2;
    sq = sqrt(n);
    while(i <= sq){
        if(n % i == 0){
            printf("The smallest number is %d\n", i);
            break;
        }
        i++;
    }
    if(i > sq){
        printf("The smallest number is %d\n", n);
    }
}