看到一个贴:http://blog.csdn.net/chszs/article/details/1573479
现用D语言解之:
/*
请设计一个控制台界面的程序,用来找出1-500以内的完整数,所谓完整数是指其所有因子之和(包括1而不包括自身)等于自身的整数,例如28=1+2+4+7+14,1,2,4,7,14都是28的因子,所以28是个完整数.
*/
/* dmd perfectNumber.d */
import std.stdio;
void main()
{
for(int i=1;i<=500;i++)
{
if(perfect(i))
writeln(i);
}
}
bool perfect(int n)
{
bool bperfect = false;
int sum =0;
for(int i=1;i<n;i++)
{
if(n%i == 0)
sum +=i;
if(sum == n)
{
bperfect = true;
break;
}
}
return bperfect ;
}