用c语言求完数,以下是原题:编写程序,输入数据范围,输出该范围之内的所有完数及其个数
input 2 integer to determine the range.
10 2000
28 496
count=2
以下是我编的:
#include<stdio.h>
int main(void)
{
int i,j,count=0;
int n1,n2,s=0;
printf("Input 2 integer to determine the range.\n");
scanf("%d %d",&n1,&n2);
for(i=n1;i<n2;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0)
{
count++;
s+=j;
}
}
if(s=i)
{
printf("%d",i);
}
}
printf("count=%d",count);
return 0;
}
我怎么运行不出来? 展开
根据你的代码改的:
#include<stdio.h>
int main(void)
{
int i,j,count=0;
int n1,n2,s=0;
printf("Input 2 integer to determine the range.\n");
scanf("%d %d",&n1,&n2);
for(i=n1;i<n2;i++)
{
s=0; //s是用来判断当前i是否为完数,所以每次开始要置为零
for(j=1;j<i;j++)
{
if(i%j==0)
{
/////////// count++; //你是打算对是完数的计数,不应该在这写
s+=j;
}
}
if(s==i) //c语言的等于判断是==,=是赋值的意思
{
printf("%d ",i); //把输出的数用空格符隔开,你才能看出来噻
count++; //这里才满足完数的条件,才该计数
}
}
printf("\ncount=%d\n",count);
return 0;
}
我的运行结果是:
修改你的代码:
int main(void)
{
int i,j,count=0;
int n1,n2,s=0;
printf("Input 2 integer to determine the range.\n");
scanf("%d %d",&n1,&n2);
for(s=0,i=n1;i<n2;i )//这里
{
for(j=1;j<i;j )
{
if(i%j==0)
{
s =j;
}
}
if(s=i)
{
count ;//这里
printf("%d",i);
}
}
printf("count=%d",count);
return 0;
}
你试试,我是手机改的,符号可能没打好