完全数

そこで調子に乗って完全数を表示するプログラムを作ってみた。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv){
	
	int number;
	int max;
	int for_max;
	int sum;
	int i,j;
	
	printf("input max number : ");
	scanf("%d",&max);
	
	for(j=1,number=0;number<max;j++){
		number += j;
		sum=0;
		for_max=number/2;
		for(i=1;i<=for_max;i++){
			if(number % i == 0){
				sum += i;
				sum += number/i;
				for_max = number/i - 1;
			}
		}
		sum -= number;
		if(sum==number)printf("%d\n",number);
	}
	return EXIT_SUCCESS;
	
}

完全数三角数だというのを利用して結構速くはなったんだが、8589869056をスルーするのはなんでだろう…オーバーフローじゃないよなぁ…?