🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

3回答

1782閲覧

素数判定のプログラム

hamu2000

総合スコア3

C#

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/03/15 15:36

ゲーム制作にあたり素数を判定するプログラムを勉強もかねて自分で作ってみました。
自分では合っていると思いますが確認してもらえたら嬉しいです。
初学者なので何卒宜しくお願い致します。
ソースコード
static void Main(string[] args)
{
int num = int.Parse(Console.ReadLine());
bool check = false;

for (int x = 2; x < num; x++) { if ((num % x) != 0) { check = true; } else { check = false; break; } } if (check == true) { Console.WriteLine("素数"); } else { Console.WriteLine("素数じゃない"); } }

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

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

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

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

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

BluOxy

2021/03/16 06:25

回答がついていて今更ではありますが、コードレビューは質問ではなく確認依頼ですから、それはteratailではあまりお勧めされていません。 なので、もし「合っていると思うけど、何かが不安で確認してほしかった」ということであれば、その不安な点をなるべく具体的に記載してみましょう。それが hamu2000 さんの知りたいこと(質問)かもしれないので。
guest

回答3

0

2は素数ですが、2が入力されるとfor文は回らないため、check変数の値が初期値のfalseのままとなり、「素数じゃない」判定となってしまいます。

c#

1bool check = true; 2 3for (int x = 2; x < num; x++){ 4 if ((num % x) == 0){ 5 check = false; 6 break; 7 } 8}

check変数の初期値をtrueとしておき、割り切れる値が出てきたらfor文をbreakするようにしておけば良いかと思います。

投稿2021/03/15 16:08

nanoseeing

総合スコア133

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

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

0

2は素数じゃないと言ってます

投稿2021/03/15 16:05

yudedako67

総合スコア2047

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

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

0

「2で割り切れるものは素数ではない」というプログラムを別の関数を利用して、先に返却してあげるといいかも知れません。

C#

1 2bool check_prime_number(int num){ 3 if(num <= 1) return false; //1より小さい数字は素数ではない 4 if(num == 2) return true; //2は素数 5 6 for (int x = 2; x < num; x++){ 7 //後は同じ 8} 9

それと余談ですが、素数は平方根の数まで調べれば素数であると判断できます。

投稿2021/03/15 22:42

編集2021/03/17 00:22
stdio

総合スコア3307

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

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

nanoseeing

2021/03/16 03:20

2だけは素数なんです…
stdio

2021/03/16 23:50

凄い単純なミスしてましたね。 if文で2であるかを判定させれば、済む話ですよ。
Zuishin

2021/03/17 00:01 編集

2 で割れるかどうかを二回判定する意味がわかりません。(4 で割れるか、6 で割れるか、8 で割れるかというところも見ればもっと判定してるけど)
Zuishin

2021/03/17 00:18

いや、これがいらないでしょうという話です。 > if(num % 2 == 0) return false; //2で割れるものは素数ではない それと、ここも間違っています。 > if(num % x == 0) return true;
Zuishin

2021/03/17 00:28

今度はこのまとめが意味不明になりました。 > 「2で割り切れるものは素数ではない」というプログラムを別の関数を利用して、先に返却してあげるといいかも知れません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問