完全数を求めるプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* 1000以下の完全数を求めるc言語のプログラムを作成してください。 完全数とは、その数自身を除く約数の合計が同じ値になる整数です。 例えば、6の約数は1,2,3,6で、6=1+2+3となるので、6は完全数です。 */ #include <stdio.h> int sumOfAllFactors(int n){ if(n<=0){ return 0; } /* nは1以上 */ int half = n / 2; int sum = 0; for(int i=1; i<=half; i++){ if(n%i == 0){ /* iはnの約数 */ sum += i; } } return sum; } int isCompleteNumber(int n){ if(n<=0){ return 0; } if(sumOfAllFactors(n) == n){ // その数自身を除く約数の合計が同じ値になる return 1; }else{ return 0; } } // n以下の完全数を全て出力 void dispCompleteNumber_underNorN(int n){ if(n<=0){ return; } printf("%d以下の完全数 : ", n); for(int i=0; i<=n; i++){ if(isCompleteNumber(i)){ printf("%d ", i); } } printf("\n"); } int main(void){ dispCompleteNumber_underNorN(100); dispCompleteNumber_underNorN(1000); dispCompleteNumber_underNorN(10000); } |
1 2 3 |
100以下の完全数 : 6 28 1000以下の完全数 : 6 28 496 10000以下の完全数 : 6 28 496 8128 |