2016-04-11 14 views
2

の合計を見つける方法を私はCコースに約4週間だ、と希望基本的に出力以下のそのプログラムに取り組んで -基本ループ - 要因

./perfect 
Enter number: 6 
The factors of 6 are: 
1 
2 
3 
6 
Sum of factors = 12 
6 is a perfect number 

./perfect 
Enter number: 1001 
The factors of 1001 are: 
1 
7 
11 
13 
77 
91 
143 
1001 
Sum of factors = 1344 
1001 is not a perfect number 

私の仕事、これまで -

// Testing if a number is perfect 

#include <stdio.h> 

int main (void) { 

//Define Variables 
    int input, sum; 
    int n; 

//Obtain input 
    printf("Enter number: "); 
    scanf("%d", &input); 

//Print factors 
    printf("The factors of %d are:\n", input); 

    n = 1; 
    while (n <= input) { 
     if (input % n == 0) { 
      printf("%d\n", n); 

     } 

     n = n + 1; 

    } 
    //Sum of factors 
    //printf("Sum of factors = %d", sum); 

    //Is it a perfect number? 
    if (sum - input == input) { 
     printf("%d is a perfect number", input); 
    } else if (sum - input == !input) { 
     printf("%d is not a perfect number", input); 

    } 

    return 0; 
} 

私は最初と最後の部分が完了しました(私は思う)。それは、私が苦労している要素をまとめているだけです。

どのようにすべての要因を一緒に追加しますか?それが最初のwhileループの一部であるか、別々に置かれるべきか?

ご協力いただければ幸いです!

ありがとうございました!

+1

if(sum-input == input){'if((sum-input)== input){'? – ryyker

+1

'if(sum-input == input){'は '(sum == input){'でなければならず、 'else'節は' if'を必要としません。 –

答えて

0

はこの1つを試してみてください)=を助けます。

#include <stdio.h> 

int main (void) { 

//Define Variables 
int input, sum; 
int n; 

//Obtain input 
printf("Enter number: "); 
scanf("%d", &input); 

//Print factors 
printf("The factors of %d are:\n", input); 

for (n=1, sum=0; n <= input; n++) { 
    if (input % n == 0) { 
     printf("%d\n", n); 
     sum += n; 
    } 
} 
//Sum of factors 
//printf("Sum of factors = %d", sum); 

//Is it a perfect number? 
if ((sum - input) == input) { 
    printf("%d is a perfect number", input); 
} else { 
    printf("%d is not a perfect number", input); 
} 

return 0; 
} 
0

はい。私は上にsum = 0を初期化し、sum + = nを加えます。最初のwhileループに移動します。それはあなたのためにそれを行う必要があります。

0

最初のループで実行できます。例えば、

factorsSum = 0; 
    while (n <= input) { 
    if (input % n == 0) { 
     printf("%d\n", n); 
     factorsSum += n; 
    } 

ホープこれは

+0

答えをありがとう、私はそれを追加し、奇妙な出力を得ている...私は最初のwhileループを更新しました 'n = 1; 合計= 0; while(n <=入力){ if(入力%n == 0){ printf( "%d \ n"、n); 合計+ = n;printf( "要素の合計=%d"、合計); } n = n + 1; ' と以下の出力
は、番号を入力します:6つの 要因は、要因の要因因子の要因= 66 合計の= 33 合計= 126であるの= 12 合計の合計完璧な数字 ここに何が起こったのかわからない... –

+1

あなたのように見える printf( "合計の係数=%d"、合計); は実際にはループ内にありますが、それを確認しましたか? – Luanf

+0

ありがとうございます@ Luanf、私が持っていたロードブロッキングを乗り越えるのを助けました。 –

0
var sum =0; 

    for (var i=1, sum=0; i <= input/2; i++) { 
      if (input % i == 0) { 
       printf("%d\n", n); 
       sum += i; 
      }  
}  
//Sum of factors  
//printf("Sum of factors = %d", sum); 

このコードはあなたのための完璧な動作します。 ループカウントの数がより少ない 詳細についてはsee here

+0

ループ・カウントを減らしたい場合は、sqrt(入力)へのループで十分です。 –