游客 Signup | Login
中文 | En

1168 - C语言6.16

一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。找出1000之内的所有完数,并输出。

Input

Output

每一个完数一行。在每一行中,首先输出这个完数的值,再输出一个冒号,之后从小到大输出这个完数的所有因子,在每个因子前输出一个空格。

请注意行尾输出换行。

Examples

Input

Output

6: 1 2 3
28: 1 2 4 7 14
496: 1 2 4 8 16 31 62 124 248

Solution C

#include<stdio.h>
int main(){
  int i,j,k;
  int sum=0;
  int a[50];
  for(i=1;i<=1000;i++){
    k=0;
    sum=0;
    for(j=1;j<i;j++)
      if(i%j==0)
        a[k++]=j;
    for(j=0;j<k;j++)
      sum+=a[j];
    if(sum==i){
      printf("%d:",i);
      for(j=0;j<k;j++)
        printf(" %d",a[j]);
      printf("\n");
    }
  }
  return 0;
}

Solution C++

#include <stdio.h>
int main() {
	int i, j, sum;
	for (i = 1;i <= 1000;i++) {
		sum = 0;
		for (j = 1;j < i;j++)
			if (i % j == 0)
				sum += j;
		if (sum == i) {
			printf("%d:", i);
			for (j = 1;j < i;j++)
				if (i % j == 0)
					printf(" %d", j);
			printf("\n");
		}
	}
	return 0;
}

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题