输出1000之内的全部“完数”,要求每行输出5个,并统计完数的个数。一个数如果恰好等于它的因子之和,就称其为完数。
#include <stdio.h>
int main()
{
int i, j, s, cnt = 0;
for (i = 2; i <= 1000; i++)
{
s = 0; /*保证每次循环时s的初值为0*/
for (j = 1; j < i; j++)
{
if (i % j == 0) /*判断j是否为i的因子*/
s += j;
}
if (s == i)
{
printf("%d ", i);
cnt++;
if (cnt % 5 == 0)
{
printf("\n");
}
}
}
printf("\n1000以内共有%d个完数",cnt);
return 0;
}
#include "stdio.h"
int main(int argc,char *argv[]){
int n,m,k,i,s,t;
for(s=k=0,n=4;n<1000;n++){
for(m=1,t=n/2,i=2;i<=t;i++)
if(n%i==0)
m+=i;
if(m==n){
printf(++k%5 ? "%d " : "%d\n",n);
s++;
}
}
if(k%5)
printf("\n");
printf("A total of %d.\n",s);
return 0;
}
#include <stdio.h>
#include <math.h>
int is_perfect_number(int n)
{
if (n < 2)
return 0;
int s = 1;
int m = (int)sqrt(n);
for (int i = 2; i <= m; i++)
{
if (n % i == 0)
{
s += i;
int j = n / i;
if (i != j)
s += j;
}
}
return s == n;
}
int main()
{
int count = 0;
for (int i = 1; i <= 1000; i++)
{
if (is_perfect_number(i))
{
printf("%d ", i);
count++;
if (count % 5 == 0)
printf("\n");
}
}
printf("\ncount: %d\n", count);
return 0;
}
using System.Linq;
//...
for(int n=2;n<1001;n++)
{
List<int> lst=new List<int>();
for(int m=1;m<n;m++)
{
if(n%m==0)lst.Add(m);
}
if(n==lst.Sum())Console.Write(n+" ");
}
至于什么一行5个的,不用管,10000以内的完数一共才4个