前提・実現したいこと
授業で現在このような課題をしています。
エラトステネスの篩により素数を求めて表示するプログラムを作成しなさい。
また、整数以外が入力された場合の例外処理も実装すること。
※エラトステネスの篩とは
指定された整数n以下の素数を発見するアルゴリズム。
ある整数nが2からn-1まで、いずれの整数でも割り切れなければ整数nは素数となる。
例えば素数13は、2 3 4…のどの数でも割り切ることはできないので素数だと求められる。
戻り値 名前 引数
メソッド boolean[] eratosthenes int n
◆eratosthenesメソッドの処理
引数で受け取った整数n以下の素数をエラトステネスの篩を使用して求めて、boolean型配列
素数フラグに結果を代入し、配列ごと戻り値として返す。
発生している問題・エラーメッセージ
エラー: クラス kad15_2のメソッド eratosthenesは指定された型に適用できません。 boolean[] primeNumFlag=eratosthenes(); ^ 期待値: int 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります kad15_2.java:39: エラー: 二項演算子'<'のオペランド型が不正です for(int i=2;i<primeNumFlag;i++){ ^ 最初の型: int 2番目の型: boolean[] kad15_2.java:40: エラー: シンボルを見つけられません if(flag==true){ ^ シンボル: 変数 flag 場所: クラス kad15_2 エラー3個
該当のソースコード
java
1 import java.util.*; 2 3 public class kad15_2{ 4 public static boolean[] eratosthenes(int n){ 5 boolean[] flag=new boolean[n+1]; 6 7 for(int i=2;i<=n;i++){ 8 flag[i]=true; 9 } 10 11 for(int i=2;i<=Math.sqrt(n);i++){ 12 if(flag[i]==false){ 13 continue; 14 } 15 for(int j=i*2;j<=n;j+=i){ 16 flag[j]=false; 17 } 18 } 19 return flag; 20 } 21 22 public static void main(String[] args){ 23 Scanner sc=new Scanner(System.in); 24 25 try{ 26 System.out.println("いくつまでの素数を求めますか?>"); 27 int inNum=Integer.parseInt(sc.next()); 28 }catch(NumberFormatException e){ 29 System.out.println("入力値が不正です。"); 30 } 31 32 boolean[] primeNumFlag=eratosthenes(); 33 34 for(int i=2;i<primeNumFlag;i++){ 35 if(flag==true){ 36 System.out.println(i+""); 37 } 38 } 39 } 40 } 41 42
試したこと
静的メソッド?なるものがよくわからず、上のメソッドでなんかいろいろやってそれをmainメソッドに持ってくるという過程がよくわかりません…
そこでこんがらがっているせいで今やっている内容が全く分からないんです。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー