实例7 循环结构的简单应用(完全数)
问题描述:
编写一程序,求出1000以内的所有完全数。(一个数如果恰好等于它除自身外所有因子之和,则称该数为完全数。如6=1+2+3,则6是完全数。)
实现代码:
<span style="font-size:12px;"><strong>/**
* 题目:循环结构的简单应用(完全数)
* 作者:shelly
* 功能:输出1000以内的所有完全数
*/
#include <stdio.h>
#include <math.h>
/**
* 函数名:main
* 功能:求1000以内的所有完全数
*/
void main()
{
int t,i,s,a = 2;
printf("1000以内有一下几个完全数:\n");
while(a < 1000)
{
s = 1;
i = 2;
t = (int)sqrt(a);
do
{
if(a%i == 0)
s += i + a/i;
i ++;
}while(i < t);
if(t*t == a)
s += t;
if(s == a)
{
printf("%d=1",a);
for(i = 2; i < a;i ++)
if(a%i == 0)
printf("+%d",i);
printf("\n");
}
a++;
}
}</strong></span>
实现结果:
注意:实现结果代码不唯一。