2

私はJavaが初めてで、インターネットで1時間答えを探していましたが、何も見つかりませんでした。

最初の 100 個の素数をこの形式で表示するプログラムを作成しようとしています。

First One Hundred Primes:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541

編集: ^ この形式も右揃えにする必要があります。

コンソールで実行しようとしたときに何も表示されない理由がわかりません。いいえ、私のコードは完全には完成していません。表示されない理由と、私が間違ったことを教えてください。:)

これは今私のコードです:

public class PrimeNumbers {

    public static void main(String[] args) {
        final int DIVISOR = 1;
        boolean isPrime;
        int test1 = 0;
        int test2 = 0;
        int num = 1;
        int count = 0;

        while(count < 101) {
            test1 = num/DIVISOR; //divides number by 1
            test2 = num%num; //gets remainder of number

            if (test1 == num && test2 == 0 && num > 1) //checks if test 1 is the same as num, test2 equals to 0 and if num is greater than 1
                isPrime = true;
            else
                isPrime = false;

                if (isPrime == true) {
                    System.out.format("%3.3f");
                    System.out.println("First One Hundred Primes:");
                    System.out.print(num);
                }
        }

    }
}
4

9 に答える 9

5

したがって、基本的にあなたがしなければならないことは、数値が素数かどうかをチェックする関数を持つことです。その後、2 からカウントを開始し、各数値をその関数に渡す必要があります。true が返されたら、それを印刷して、素数を見つけたという事実を記録します。これを100回やったらやめられます。次のコードはまさにこれを実装しています。

public class OneHundredPrimes
{
    public static boolean isPrime(int x)
    {
        for (int i = 2; i <= Math.sqrt(x); i++) {
            if (x % i == 0) {
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args)
    {
        int currentNumber = 2;
        int primesFound = 0;

        while (primesFound < 100) {
            if (isPrime(currentNumber)) {
                primesFound++;

                System.out.print (currentNumber + " ");
                if (primesFound % 10 == 0) {
                    System.out.println();
                }
            }

            currentNumber++;
        }
    }
}

不明な点がある場合は、質問してください。

于 2012-04-25T16:26:36.647 に答える
2

コードの設計を再考する必要があると思います。

  • boolean isPrime(int i)i が素数の場合は true、そうでない場合は false を返すメソッドを作成します。
  • メソッドがいくつかの数値に対して期待値 (true/false) を返すことをテストして、アルゴリズムが機能することを確認します。
  • 1 から Integer.MAX_VALUE までの整数をループし、上記の方法でそれぞれをチェックします。素数の場合は、出力してカウントを増やします。
  • カウントが 100 になったら停止します。
于 2012-04-25T15:58:33.090 に答える
0

numサイクルごとにインクリメントする必要があります。またcount、プライムを見つけたときはいつでもインクリメントする必要があります。

ああ、あなたDIVISORは1になることはできず、最終的になることもできません:)あなたのすべての数について、それを2とnumber-1の間の除数値で割ってみてください-それが素数であるかどうかを調べてください。

于 2012-04-25T15:54:01.770 に答える
0

素数:

A Prime Number can be divided evenly only by 1 or itself. 
And it must be greater than 1.

これに基づいて、プログラムを変更する必要があります:-
1.
2 つのループを
取り ます。

于 2012-04-25T16:06:30.973 に答える
0

これが宿題の場合は、それに応じてタグ付けしてください。

whileあなたのループを考えてみましょう。ループはどのように終了しますか? カウンターを考えてみてください。カウンターはいつインクリメントされますか?

于 2012-04-25T15:58:22.970 に答える
-1

別の方法は、主要なメソッドをメインから分離することです(最初のソリューションに基づく)注:これはテキストフォーマットなしです:

public class Primes
{
    public static boolean isPrime (int x)
    {
        for (int i = 2; i <= Math.sqrt (x); i++)
        {
            if (x % i == 0)
            {
                return false;
            }
        }
        return true;
    }

    public static void main (String[] args)
    {
    new Primes().findprimes(100);  // <<--here you can choose whatever k prime
    }

    public void findprimes (int k){
    for (int i = 2, primesfound = 0; primesfound < k+1 ; i++)
    {
        if (isPrime (i))
        {
            primesfound++;
            System.out.print (i + " ");
        }
    }   
  }
}
于 2013-06-25T12:56:55.353 に答える
-1
public class prime {
    public static int Prime(int n,int counter)
    {
        if(n<=3 && n>0)
        {
            return n;
        }
        if((n-counter)==n || n%(n-counter)>0){
            counter++;
            return Prime(n,counter);
        }
        else if((n-counter)>1 && n%(n-counter)==0){
            return 0;
        }
        else
            return n;
    }
    public static void main(String[] args) {
        int k=0,found=0;
        for(int i=1;found<100;i++){
            k=Prime(i, 0);
            if(k>0){
               found++;
               System.out.println(k);
            }
        }
    }
}
于 2016-04-18T18:04:10.297 に答える
-1
package com.mehmood.nisar;

public class Myclass {

    public static void main(String [] args)
    {
        int status = 0;

        for (int i = 2; i < 100; i++) {

            status =0;
            for (int j = 2; j < i; j++) {

                if(i %2 == 0)
                {
                    status = 1;
                    break;
                }

                try {
                    if(i % j == 0)
                    {
                        status = 1;
                        break;
                    }
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }

            }//break;

            if(status == 0)
            {
                System.out.println(i);
            }
        }
    }
}
于 2016-04-26T12:44:40.203 に答える