本文主要是介绍一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
#include<stdio.h>
#define N 1000
int main()
{int i,j,k,n,sum;int a[256];printf("以下是所有1000以内的完数:\n");for(i=2;i<=N;i++){sum=a[0]=1;//给第一个数字为1 k=0;for(j=2;j<=(i/2);j++){if(i%j==0){sum+=j;//sum为质数和 ,j就是质数 a[++k]=j;//注意这里先++保证质数赋值给a[1]开始,把质数存储到数组中 }}//对于2到1000内的所有数子,只要满足这个数字等于他的质数和就执行以下语句 if(i==sum){printf("%d=",i);for(n=0;n<=k;n++)printf("+%d",a[n]);printf("\n");}}return 0;
}//
//#include<stdio.h>
//
//int main()
//{
// int i, j, sum; /* i表示要判断的数,j表示因子,sum表示因子之和*/
//
// for (i = 2; i <= 1000; i++)
// {
// sum = 1;
// for (j = 2; j <= i / 2; j++)
// if (i%j == 0) /* 判断i能否被j整除,能的话j即为因子 因子不包括自身 */
// sum += j;
//
// if (sum == i) /* 判断此数是否等于因子之和 */
// {
// printf("%d=, ", i); /* 输出该数 */
//
// for (j = 2; j <= i / 2; j++)
// if (i%j == 0)printf("%d+ ", j); /* 输出因子 */
//
// printf("\n");
// }
// }
//
// return 0;
//}
测试:
这篇关于一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!