前提・実現したいこと
C言語を用いて友愛数を求めるプログラムを書きたいです。
コンパイルは通りましたが結果が表示されません。
以下、問題です。
友愛数を求めるプログラムを作成し、10000以下の範囲で友愛数を求めよ。
友愛数:異なる2つの自然数の組で、自分自身を除いた約数の和が、互いに他方と等しくなるような数のこと。
発生している問題・エラーメッセージ
[xxxxxxx@xxxxxxxx kadai1]$ ./a.out [xxxxxxx@xxxxxxxx kadai1]$
該当のソースコード
C11
1 #include<stdio.h> 2 3//ぷろとたいぷ宣言 4int yuuaisuu(int); 5 6int main(){ 7 int i,j; 8 int n = 0; //sumの配列番号である変数 9 int number; //他方の数の一時退避領域 10 int sum[10000]={}; //nの約数である変数 11 int yuuaikentei; //sum[n]から自分自身を引いた数を入れる変数 12 13 for(i = 1 ;i < 10000; i++){ 14 15 for(j = 1;j < i; j++){ 16 if( (i % j) == 0){ 17 sum[n] += j; 18 } 19 } 20 21 /* 友愛数は約数から自分自身をひいたものが他方と等しくなる数なので 22 相互に計算する(もう一つはif条件内で計算している) */ 23 yuuaikentei = sum[n]-n; 24 number = yuuaisuu(yuuaikentei); 25 26 if(yuuaikentei == number){ 27 printf("%d , %d\n",yuuaikentei,number); 28 } 29 /* ここで配列の番号を変化させる */ 30 n++; 31 } 32 33 return 0; 34} 35 36 37int yuuaisuu(int a){ 38 int sum=0; 39 int i,j; 40 /* 約数を求める */ 41 for( j = 1; j < a ; j++){ 42 if( (a % j) == 0){ 43 sum += j; 44 } 45 } 46 /* 約数から自分自身を引く */ 47 i = sum-j; 48 return i; 49} 50
試したこと
1000など小さい数字でも試してみましたが、同様に表示されませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。