電子書籍の厳選無料作品が豊富!

C言語で、「自然数nを入力し、nの約数をすべて求めて出力後、その個数と合計を出力をする。尚、nとして0(ゼロ)以下が入力されるまで、何度も繰り返す」という問題をやっています。
出力例は、(3を入力したとして)
「3の約数は 1  3
約数の個数は2個
約数の和は4」というものです。

そこで、コーディングをしたのですが、先生が開発したコンパイラで運用したところ、フリーズが起きて強制終了してしまいました。先生は、「そんなことはない。フリーズが起きるときはそのプログラムにバグがあるときだ」と言ってました。

そこでコーディングしたプログラムは以下の通りです。

#include <stdio.h>
main()
{int i,j,n,cnt,sum;
printf("自然数=");scanf("%d",&n);
while(n>=0){
printf("%dの約数は",n);
for(i=1;i<=n;i++){
if(n/i>=0){
j=n/i;
printf(" %d",j);
sum=sum+j;
cnt++;
j=0;}
}
printf("\n");
printf("約数の個数は%d個",cnt);
printf("約数の和は%d",sum);
}}

どこかに間違いがありますか?
IF文の中でいちいちめんどくさいことをしていますが、気にしないでください。

A 回答 (11件中11~11件)

単純に、while(n>=0){}が無限ループしているだけでは?

この回答への補足

回答ありがとうございます。

確かに、無限ループになってます・・・。

もしよかったらどこで終了条件を定義すればいいのか教えてください。。。

補足日時:2010/07/01 22:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!