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