c - 1到1000之间的完美数字
问题描述
我不明白为什么这个程序没有给出任何输出。我只是看不到错误。这是一个查找 1 到 1000 之间的每一个完美数字的程序。请帮我找出错误。谢谢。
#include <stdio.h>
int main(){
int number=1, i, sum=0;
while(number<=1000){
for(i=1; i<number; i++){
if(number%i==0){
sum+=i;
}
}
if(sum==number){
printf("%d is perfect\n", numero);
}
number++;
}
return 0;
}
解决方案
如前所述,您必须sum
在循环开始时将 重置为零。
您还必须替换numero
为number
(错字)。
为了更进一步,我建议您使用 for 循环而不是 while 循环,恕我直言,我发现它更具可读性。内部 for 循环也可以在i <= number/2
优化一点时停止。这是我的代码建议:
#include <stdio.h>
int main(){
int sum;
for(int number = 1;number <= 1000; number++){
sum = 0;
for (int i = 1; i <= number/2; i++){
if (number % i == 0){
sum += i;
}
}
if (sum == number){
printf("%d is perfect\n", number);
}
}
return 0;
}
输出:
6 is perfect
28 is perfect
496 is perfect
推荐阅读
- c# - 当元素值只有空间时,XmlReader XSD 验证失败
- ios - 带有 RxCocoa 的 UITableView 没有正确观察 contentOffset 属性
- python-3.x - 如何为使用opencv检测到的每个形状仅获取一个计数
- c# - 将每个 CSV 文件记录转换为单独的 JSON 文件
- c - 为什么有些函数不能在内核模块中使用?
- javascript - 我什么时候应该使用 key 与 v-model 进行输入?
- ios - 协议类型不能符合协议,因为只有具体类型才能符合协议
- android - GoogleSignInAccount.getIdToken() 引发空对象引用错误
- python - 具有不同和大量样本的多组输入导致内存错误
- python - 为什么我单击时 Spyder 无法打开 Dictionary 变量?