游客 Signup | Login
中文 | En

1376 - 完数

    求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。

Input

    测试数据有多组,输入n,n数据范围不大。

Output

    对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。

Examples

Input

6

Output

6

Solution C

#include<stdio.h>
int main(){
int n,icount;
int i,j,sum;
  while(scanf("%d",&n)!=EOF){
    icount=0;
  for(i=2;i<=n;i++){
    sum=0;
    
  for(j=1;j<i;j++)
    if(i%j==0)
      sum+=j;
  if(sum==i){
    if(icount++)
      printf(" ");
    printf("%d",sum);
  }
  }
    putchar('\n');
  }
  return 0;
}

Solution C++

#include <stdio.h>
#include <math.h>

int SumOfFactors(int num){
	int len = (int)sqrt((double) num);
	int sum = 1;
	for(int i=2; i<=len; i++){
		if(num%i == 0){
			sum += i + num/i;
		}
	}
	if(len*len == num){
		sum -= len;
	}

	return sum;
}

int main(){
    int n;
    while(scanf("%d", &n) != EOF){
    	int iCount = 0;
    	for(int i=1; i<=n; i++){
    		if(SumOfFactors(i) == i){
    			if(iCount++){
    				putchar(' ');
    			}
    			printf("%d", i);
    		}
    	}
    	putchar('\n');
    }

    return 0;
}

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