1

特定の範囲の範囲を表示し、24 から 28 のようにその範囲に素数がない場合にのみ「素数なし」を表示するプログラムが必要です。

int count=0;

for(prime = lowerLimit ;prime < upperLimit; prime++) 
{   
    count=0;                 
    for(divisor = 2; divisor <prime; divisor++)

        {
           if(prime % divisor== 0)                            

                      count++;

    }

if(count==0)
System.out.println(prime);
}

if (count>0)
System.out.println("nope"); 

私は入れてみました

if (count>0)
System.out.println("nope"); 

ループの外側ですが、範囲に素数がある場合にも出力されます。どうすれば対処できますか?

4

4 に答える 4

2

まず第一に、あなたの素数検出方法はひどいものです。動作しますが、非常に遅いです。その内側のループを改善したい場合は、ふるいの使用を検討することをお勧めします。

第二に、正確に何を数えようとしていますか?現在、カウント変数には数値の約数が格納されており、次の数値を確認するときにそれをゼロに設定します。特定の範囲内に素数がいくつあるかについて、どのようにわかりますか? 次のようなことができます:

notPrime = false;
for(prime = lowerLimit ;prime < upperLimit; prime++) 
{                    
    for(divisor = 2; divisor <prime; divisor++)
    {
        if(prime % divisor== 0){
            notPrime = true;
            break;
    }
    if(notPrime)
        break;
}

if(notPrime) System.out.println("There's a prime");
于 2013-10-03T05:16:53.770 に答える
0

外側のループの最後に到達してcountも 0 のままである場合は、素数が見つかったことを意味します。したがって、これが一度でも発生した場合、最後に「いいえ」を出力することはありません。変数を使用してboolean、素数を見たかどうかを追跡します。これは宿題なので、使い方を正確に理解させます。ヒント:boolean上記の両方のループを宣言します。

于 2013-10-03T05:13:02.843 に答える