【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.18660

教えてください
投稿者---happy(2004/12/13 10:49:27)


キーボードから入力された整数n(n>=3)が素数であるかどうかを
調べるプログラムを関数で表す方法をやったのですが
うまくいきません、どこが悪いか教えてください

#include <stdio.h>
int Sosuu(int);
int main(void)
{
int n;
printf("n =");
scanf("%d",&n);
if(Sosuu(n)==1)
{printf("Sosuu de nai\n");}
else
{printf("Sosuu de aru\n");}}
int Sosuu(int m)
{int i,j;
int flag;
flag=0;
for(i=2;i<=j-1;i++)
if(j%i==0){
return(0);}
else{
return(1);}
break;}}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:教えてください 18663 Hermit 2004/12/13 11:09:50
<子記事> Re:教えてください 18664 RiSK 2004/12/13 11:23:03


No.18663

Re:教えてください
投稿者---Hermit(2004/12/13 11:09:50)


ソースが汚い、括弧の数が合わない、
素数チェックの時渡された m を関数中で使っていない
int Sosuu(int m)
{
    int i;
    for(i=2;i*i<=m;i++)
        if(m%i==0)
            return 1;
    return 0;
}



この投稿にコメントする

削除パスワード

No.18664

Re:教えてください
投稿者---RiSK(2004/12/13 11:23:03)


> うまくいきません、

何がうまくいかないのか分かりません。教えてください。

> どこが悪いか教えてください

ソースはきちんとインデントを取りましょう。


素数とは何かを考えてください(分からなければ調べましょう)。
正の整数である必要があります。
負数および 0 は不正ですし,1 は例外と考えるべきだと思います。
元のアルゴリズムを尊重して,以下のようにしてみました。
あらゆる数を入力して,結果を報告してくださいまし。
#include <assert.h>
#include <stdio.h>

int IsPrime(unsigned n)
{
    unsigned u;
    assert(n);
    if (n <= 1) {
        return 0;
    }
    for (u = 2; u <= n-1; ++u) {
        if (n % u == 0) {
            return 0;
        }
    }
    return 1;
}

int main(void)
{
    for (;;) {
        unsigned n;
        puts("入力された数が素数か調べます。");
        printf("数を入力してください :");
        if (scanf("%u",&n) != 1) {
            break;
        }
        if (IsPrime(n)) {
            printf("%u は素数です。\n\n", n);
        } else {
            printf("%u は素数ではありません。\n\n", n);
        }
    }
    return 0;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧