找到完美的数字

  • 本文关键字:数字 完美 c
  • 更新时间 :
  • 英文 :


我需要写一个函数,如果写在终端中的数字是完美数字,则给出1,如果不是,则给出零。我写了这个代码,但我不明白出了什么问题,有人能帮我吗?(我刚刚学会了函数(。

#include <stdio.h>
int PerfectNumber(int n){
int sum = 0;
for (int i = 0; i < n; i++){
if(n % i == 0 && i != 0){
sum = sum + i;
}
}
if (sum == n){
return 1;
} else {
return 0;
}
}
int main(){
printf("Inform a number:n");
int n;
scanf(" %d", &n);
int result = PerfectNumber(n);
if(result == 1){
printf("This is a perfect number!n");
} else {
printf("This is not a perfect number!n");
}
return 0;
}

这将修复它:

int PerfectNumber(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}

问题是循环从零开始。循环体检查了它,但只是在第一次在%操作中使用它之后,所以它没有避免任何被零除的异常。解决方案是简单地在1开始循环,这消除了在循环体中进行任何此类测试的需要。

最新更新