完全数
そこで調子に乗って完全数を表示するプログラムを作ってみた。
#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をスルーするのはなんでだろう…オーバーフローじゃないよなぁ…?