【问题标题】:Using While-Loops to Find the Smallest Divisor of a Number使用 While 循环查找数字的最小除数
【发布时间】:2019-02-25 22:10:21
【问题描述】:

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

最好的问候!

【问题讨论】:

标签: c while-loop


【解决方案1】:

要找到最小的除数,您需要从 2 到 n 检查哪个数字的除数导致余数为 0。除法导致余数为 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);
    }
}

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多