• ベストアンサー

素数判定プログラム

C言語で、『n以下のすべての素数を求めるプログラム』のソースリストを平方根を使ったやり方で作りたいのですが、エラーが出てしまって、どうしてもうまく作れません。 C言語初心者の上、勉強不足なのが悪いのですが・・・ぜひ教えてください!お願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • k-family
  • ベストアンサー率34% (180/523)
回答No.1

「平方根を使ったやり方」というのは知らないのですが、いずれにしても >エラーが出てしまって、どうしてもうまく作れません。 のプログラムを書いてみてはいかがですか? エラーの部分については回答できるかも知れません。

tammy_8823
質問者

お礼

回答いただき、ありがとうございます! でも色々と考えて操作してたら作ることができてしまいました・・・。 お騒がせしてすみません(--;

関連するQ&A

  • 素数判定について

    C言語で、 素数を判定するのに、全ての素数で割ることによって 判定するプログラムって、どのように作ればいいんでしょうか?それを線形リストを使えっていってもわかりません。 全ての数で順に割っていって割りきれた数が割られた数と同じなら素数で、それ以外なら素数ではないというプログラムならできるんですけど。。。

  • 入力した任意の数の平方根を求める

    C言語を少しずつですが勉強していて、最小値から最小値までの和を求めるのと、入力した数の2乗を求めるプログラムはわりと楽に完成したのですが、平方根を求めるというのができずに困っています。 プログラムの流れを説明すると、 1.どの処理を行うのか、数字+Enterで選択(平方根は、case 3です) 2.その処理を行う 3.結果の出力 です。 平方根の処理は、 scanfで実数を変数に代入→計算を行う関数を実行→結果を出力です。 症状としては、例えば4と入力して処理を実行すると、桁数のすごく大きい数が入力した数として処理され、また平方根も正しく求められていないようです。 (コンパイル時にエラーは出ていません)

  • 平方数でない整数の平方根は無理数であることの証明

    すみません。高齢者なので使用する文字はすべて正の整数とします。 整数の平方根で整数になるのは1,4,9,16のような平方数だけです。例えば5の平方根を考えた場合、 4の平方根は2、 9の平方根は3ですから、5の平方根は2と3の間の数となり絶対に整数にはなりません。以上は単なる確認です。 そこで平方数ではない整数をaとします。これの平方根を√aと表記します。確認通り√aは整数にはなりません。この非平方数の平方根が分数で表現できるかどうかが問題です。 √a=n/mと分数で表現できるとします。ここでnとmは互いに素であるとし、当然m≠1です。 両辺を2乗すると  a=n2/m2 となります。ここでaは整数です。n2とm2にも共通の約数はないので、n2/m2は整数にはなりません。すると左辺は整数、右辺は小数(小数点以下が0ではない純粋の小数)になるのでこれは矛盾です。従って平方数ではない整数の平方根は全て無理数である。 質問は、こんなに簡単な証明でいいのだろうか?基本的なところで考え方に穴があるのではないだろうか?ということです。ご教示願います。

  • 素数を判定するプログラム

    素数を判定するプログラムをC言語で作れという問題があったのですが、以下のものをビルドして実行したら途中で止まってしまいました。(例えば5と入力する)しかし、1以下の場合は正常にif文が評価されました。 // homework4.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 #include <stdio.h> int main(int argc, char* argv[]) { int number; int n; int i; printf("1より大きい整数を入力してください: "); scanf("%d", &number); if (number <= 1) { printf("1より大きい整数を入力してください\a: "); scanf("%d", &number); } for (n = 2; n = number - 1; n++) { i = number % n; if (i = 0) { printf("%dは素数ではありません", number); break; } } printf("%dは素数です", number); return 0; } 自分ではどこがおかしいのかさっぱりわかりません。よろしくお願いします。

  • 素数問題

    今C言語を勉強してるんですが・・・ 「n以下の素数をすべて表示せよ」 という問題の答えがわかりません>< 御願いします

  • プログラムについて教えて下さい。

    ある値を入力し、0以上100以下のときだけ平方根を計算するプログラムで、負の値や100よりも大きな値を入力したときは何も表示せず、 再度入力するようなプログラムを教えて下さい。 #include <stdio.h> #include <math.h> main() { int n,i; printf("0から100までの値を入力してください。"); scanf("%d",&n); i=0; do{ i++;} while(i<=100); if(100>=0) printf("%dの平方根は%dです。\n",n,sqrt(i)); return(0); } どうか、お願いします。

  • 簡単なプログラムなんですが…

    C言語の簡単なプログラムなんですが、私のような初心者には良く分かりません… 出来るだけ詳しく教えていただけるとうれしいです。 下の2つのプログラムの作り方が理解できません。 (1)データ数nとn個のデータを入力して、その平均を求めるプログラム。 (2)(1)のプログラムに合計と標準偏差を計算して出力する機能を追加したプログラム。 C言語に詳しい方お願いします。

  • 最大公約数を求める

    一般に、a,bが2^nくらいの整数であれば、最大公約数を求めるには、割り算も含めてn^3に比例した計算量が必要であるといわれている。しかし、これを素因数分解して求めると、素因数分解するのに、その数の平方根までの割り算が必要になるので、(√2)^nに比例した計算量が必要になる。 という説明があったのですが、”素因数分解するのに、その数の平方根までの割り算が必要になる”というのがよく分かりません。何故平方根まで割り算しないとならないのでしょうか????

  • 素数を求めるプログラム(アセンブリ言語)

    アセンブリ言語で素数を求めるプログラムを作っているのですが、どうしても内容が理解できなくて困っています。 難しいのは、多分理解できないので、できるだけ簡単なプログラムソースを書いて頂けないでしょうか? または、それがあるページを教えてください。

  • 素数の判定

    自然数Nが√Nを越えない最大の整数以下のすべての素数で割り切れなければ、Nは素数である。 この定理の証明について、わからないことがあるので質問します。本の証明では√Nを越えない最大の整数をnとし、Nがnより大きい素数qで割り切れたとすると、そのときの商をpとして、N=pqである。ここで1<p≦n<q<Nに注意すると、 pが素数ならNは素数pで割り切れるはずだし、pが合成数ならNはpの素因数で割り切れていたはずであり、いずれにしても不合理である。証明終わり。 自分は不合理を示す証明は、背理法を使っていると思ったのですが、その場合自然数Nが素数でないと仮定して証明を始めると思いました。しかし√Nを越えない最大の整数をnとし、Nがnより大きい素数qで割り切れたとすると、という仮定で始まっています。また√Nを越えない最大の整数をnとし、Nがnより大きい素数q以外では割り切れないとすると、という文章の解釈でよいのかと思いましたが、はたして正しい証明なのか疑問が残りました。最後に対偶をとってそれを背理法で証明しているのかと思いました、対偶は、Nが素数でないならば、√Nを越えない最大の整数をnとし、Nはn以下の素数いずれかで割り切れる。ですが、これを背理法で証明しようとすると、 Nはn以下の素数いずれかで割り切れない、という仮定から始まるとおもいました。本の証明の書き出しと違いました。自分で考えた方針では、本の証明とだいぶ違います。 だれか本に書かれた証明で、pで割り切れると何が不合理なのかと、自分の証明の方針のまちがいを指摘してください、お願いします。

専門家に質問してみよう