coding Shift_JIS; import Math; import system.Int; /* * main関数 * プログラムはここから開始される */ void main(){ // ユーザーが終了を希望するまで、処理をループ(繰り返し)する bool loop = true; // ループ継続条件 while( loop ){ // ユーザーによる数値の入力(まず文字列で受け取り、整数と解釈できるか確認) string inputStr = input( "整数を入力してください - Please enter the number " ); if (!isInt(inputStr)) { alert("入力値が、整数として解釈できません。"); continue; } // 次に varint 型の多倍長整数に変換し、範囲を確認 varint numberVi = (varint)inputStr; if (numberVi <= 0v || INT_MAX <= numberVi) { alert("入力値が、このプログラムの対応範囲外です。"); continue; } // 最後に int 型の整数に変換し、計算に使う int number = (int)numberVi; // 素数判定と結果出力 if( isPrime( number ) ){ alert( number + " は素数です。" ); }else{ alert( number + " は素数ではありません - is NOT prime" ); } println(""); // ループの継続確認 loop = confirm( "別の数を判定しますか?" ); } } /* * 素数判定を行う関数 * 引数nが素数ならtrueを、そうでなければfalseを返す */ bool isPrime( int n ){ println(n + " が素数かどうか確認します..."); int max = sqrt( 1.5*((double)n) ); // 約数を探す上限 // 素数は1より大きな自然数なので、1以下は素数でない if( n <= 1 ){ return false; } // 2以上の数で約数が無いか探す for( int i=2; i<=max; i++ ){ if( n % i == 0 ){ println(i + " で割り切れました。"); println( n + " は素数ではありません。" ); return false; // 割り切れれば、約数があるので素数でない } } // 割り切れなければ、約数が無いので素数 println( n + " は素数です。" ); return true; }