问题 G: 零基础学C/C++167——判断是否完数

这题完数很简单的,就当练练手。
完数优化的话只用从2查找到n/2+1就行(简单优化);
自定义函数比较方便理解;
点击查看代码
#include <stdio.h>
int ws(int x)
{ int sum=0;
for(int i=1;i<x;i++)
{
if(x%i==0) sum+=i;
}
if(sum==x) return 1; //返回1即为完数
else return 0; //返回0就不是完数
}
int main ()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=n;i<=m;i++)
{
if(ws(i)==1)//ws(i)==1就是完数
{
printf("%d ",i);
}
if(i==m) printf("\n");
}
return 0;
}

浙公网安备 33010602011771号