基本的には、cateyeさんの回答にある
判定を抜ける時に渡した数値が素数だった場合に、それを呼び出し側が判別できなくてはいけません。
をする必要があります。
具体的には、以下のAとBのどちらを通過したかを通知する仕組みが必要
public void primes(int prime) {
for(int i = 2; i < prime; i++) {
if(prime % i == 0) {
// A
return;
}
}
// B
System.out.println(prime + "は素数です");
}
Staticな変数に素数の数を保存する(Staticじゃなくても良かった)
- 関数の戻り値に素数判定した回数を設定する(primes側でカウント)
- 関数に戻り値を設定して素数かわかるようにして(main側でカウントする)
3番目がたぶん一般的です。
private static int cnt = 0;
public void primes1(int prime) {
for(int i = 2; i < prime; i++) {
if(prime % i == 0) {
// A
return;
}
}
// B
cnt++;
System.out.println(prime + "は素数です");
}
// cnt = primes2(n, cnt);
public int primes2(int prime, int cnt) {
for(int i = 2; i < prime; i++) {
if(prime % i == 0) {
// A
return cnt;
}
}
// B
System.out.println(prime + "は素数です");
return cnt + 1;
}
// if (primes3a(n)) cnt++;
public boolean primes3a(int prime) {
for(int i = 2; i < prime; i++) {
if(prime % i == 0) {
// A
return false;
}
}
// B
System.out.println(prime + "は素数です");
return true;
}
// cnt += primes3b(n); // n が素数の場合、+1される
public int primes3b(int prime) {
for(int i = 2; i < prime; i++) {
if(prime % i == 0) {
// A
return 0;
}
}
// B
System.out.println(prime + "は素数です");
return 1;
}
というメソッドになっていれば、main側で素数と判定された回数がわかります。