質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

1207閲覧

素数判定のプログラムを教えてください…

Lacia62298151

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/08/02 07:24

編集2020/08/02 14:11

前提・実現したいこと

C言語で入力した自然数が素数かどうか判断するプログラムを作成したい。

発生している問題・エラーメッセージ

作ろうとしてみたのですが、作り方がさっぱりわかりません。

該当のソースコード

C言語

試したこと

If文の中でさらにIf文を書いてみたが、うまくいかなかった。
フローチャートを自分で作成してみた
入力する数字をpとしてp mod=0というところまではわかるのですが、それ以降がわかりません

補足情報(FW/ツールのバージョンなど)

私はEclipseというアプリで作成しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/02 07:34

プログラムではなく手計算なら出来ますか?
cateye

2020/08/02 08:00 編集

2よりも大きい素数(3 5 7 11 13 17 ・・・)は全て奇数なのは分かりますか? ・・・なので、奇数のみを対象とした判定をしましょう。 (入力された数が偶数なら、2以外は素数ではない) 入力される数値の最大値は?・・・環境(OSやコンパイラ)によって、処理できる最大値が変わってきます。
guest

回答4

0

最も簡単で最も遅い実装かな?

C

1#include <stdio.h> 2 3int is_prime(int n) 4{ 5 int i = 2; 6 if (n > 1) 7 while (n % i) i++; 8 return i == n; 9} 10 11int main(void) 12{ 13 for (int n = 0; n < 100; n++) 14 if (is_prime(n)) printf("%d\n", n); 15}

投稿2020/08/02 17:54

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2020/08/03 00:38

割り切れなかった数を勘定するのか。なるほど、確かに"遅い"わ。 # なんか悔しいぞwww
guest

0

ベストアンサー

2,3,4...n-1 のいずれかで割り切れるnは素数ではないのだから:

C

1// nが素数なら1, 素数でないなら0を返す 2int is_prime(int n) { 3 int i; 4 if ( n < 2 ) return 0; // n < 2 のとき、nは素数ではない(としておこう) 5 for ( i = 2; i < n; ++i ) { // i = 2, 3, 4 ... n-1 に対し 6 if ( n % i == 0 ) { // n が i で割り切れたら 7 return 0; // 素数ではない 8 } 9 } 10 return 1; 11}

※ 最も簡単で最も遅い実装です。

投稿2020/08/02 13:18

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lacia62298151

2020/08/02 14:13

失礼な質問ですいませんでした。 実行、うまくできました。 ご回答ありがとうございます。
guest

0

エラトステネスの篩を使うか, あるいは貪欲に2から割り算をしていって割り切れないか確かめる, 素因数分解するなど色々やり方はありますね。

C言語で入力値以下の素数の最大値を求めたいを改造すればいけるんじゃないでしょうか。

投稿2020/08/02 11:28

編集2020/08/02 11:32
Penpen7

総合スコア698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずは、素数、というものがどういうものであるか調べましょう。
#ぐぐればたくさん解説でてきます

そして、手計算でもなんでもいいので、その素数を判定する場合、どういう計算、どういう手順で判定すればいいかを考えます。

とりあえずここまで、がんばってください。

投稿2020/08/02 07:35

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問