我的程序是检查一个数字是否是一个完美的数字 我有一个运行时错误,请帮忙 如果重要的话,我正在使用记事本++
#include <stdio.h>
int main(void)
{
int input=0;
int i=0;
int counter=0;
printf("enter a number \n");
scanf("%d", &input);
for (i=0;i<=input;i++)
{
if (input%i==0)
{
counter = counter+i;
}
}
if (input==counter)
{
printf("%d in a perfect number\n", counter);
}
else
{
printf("%d is not a perfect number\n", input);
}
system("pause");
return 0;
}
答案 0 :(得分:5)
input % i
除以input
时, i
会返回余数。但是,您无法将数字除以0
,因此input % 0
会导致未定义的行为。
将您的循环更改为从1
而不是0
开始。此外,您应该在 i
到达number
之前停止,因为该数字始终是其自身的除数,但在加总时不应包含在总和中除数(一个数字怎么可能等于它自身和所有除数的总和?)。
for (i = 1; i < number; i++)
答案 1 :(得分:1)
您已将input%i == 0
和i
初始化为0
。这在第一次迭代时基本上除以0
,这可能是错误的来源。