1年生課題9 - 素数判定
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ITProfo_PrimeNumber { class Program { static void Main(string[] args) { // 素数を求めるプログラム int que; Console.WriteLine("素数か確認したい数値を整数で入力してください。"); que = int.Parse(Console.ReadLine()); // 簡単な確認開始 if (que <= 1){ Console.WriteLine(que + "は素数ではありません。"); Console.ReadLine(); // コンソール動作を停止 }else { // 2以降の数字で割り切れるか調べる // ただし、自身を2で割った数までしか調べない // また、割った際に1になった場合は素数をする(入力された数値は2であるため) float ch_count = que / 2.0f; if (ch_count == 1.0){ Console.WriteLine(que + "は素数です。"); Console.ReadLine(); // コンソール動作を停止 } else { // floatをint型にcastして1足す int max_count = (int)ch_count + 1; // for文を利用して調べていく(クラスを利用してみる) Prime p = new Prime(); if (p.prime(que, max_count)) { // 素数である Console.WriteLine(que + "は素数です。"); Console.ReadLine(); // コンソール動作を停止 } else { // 素数でない Console.WriteLine(que + "は素数ではありません。"); Console.ReadLine(); // コンソール動作を停止 } } } } } class Prime { public bool prime(int que,float max_count) { // 受け取った値を使って確認開始 // for文を利用して割り切れるかを確認する for (int i = 2; i < max_count; i++) { if ((que % i) == 0) // 割り切れたので素数ではない return false; } // 割り切れなかったので素数 return true; } } }
素数とは自分の値と1以外で割り切れない正の数である。
今回のプログラムでは、演算子"%"を利用して素数を求める仕組みを採用した。
今までに何度か素数を求めるプログラムを制作したが、while文を利用しいちいちfloatを切り捨てして少数がないか調べていたので、読みにくいコードとなっていたが、今回は非常に読みやすいコードがかけた。
また、特に理由もなくクラスを利用した。