2017-06-13 4 views
1

一般的な質問:forループにコメントがどこに置かれますか?範囲内のすべての素数を配列に追加する

質問:Android Dev Studioのプログラムでは、基本的な「Hello World」プログラムが設定されています(テキストボックスにメッセージを入力し、「送信」ボタンをクリックすると、次のアクティビティにメッセージが表示されます)。 )。

しかし、私はそのプログラムを人がテキストボックスに数字を入力するプログラムに適応させ、プログラムは1と入力された数字の間のすべての素数を見つけるでしょう。

これまでの私のコードは、書式の設定方法がわからないという構文のセクションに関するコメントがあります。

public class Main2Activity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 

    int limit = Integer.parseInt(message); 
    int a[limit]; 
    for(int i = 1; i <= limit; i++) 
    { 
     if(i%2 = 0 || i%3 = 0 || i%5 = 0 || i%7 = 0) 
     { 
      //I want the program to move on to the next number 
     } 
     else 
     { 
      //I want this number to be added into the array 
     } 
    } 

    TextView textView = (TextView) findViewById(R.id.textView); 
    textView.setText(a); 
    //a being the name of the array created 

私が持っている他の問題は、プログラムがそれらが自身によって分割されることに起因して、1、2、3、5、及び7として素数を認識し、したがって、残りはである持っていないであろうことであろう0

残りの用語を入力する前にに配列の一部を設定する方法はありますか?もしそうでなければ、私はプログラムを編集する方法がありますので、それらの数字はプライムとして現れるでしょうか?

答えて

1

このコードはあなたを助ける必要があります。

String primeNumbers = ""; 
    for (int i = 1, num = 0; i <= limit; i++) { 
     int counter = 0; 
     for (num = i; num >= 1; num--) { 
      if (i % num == 0) { 
       counter = counter + 1; 
      } 
     } 
     if (counter == 2) { 

      primeNumbers += i + " "; 
     } 
    } 

    TextView textView = (TextView) findViewById(R.id.textView); 
    textView.setText(primeNumbers); 
1

あなたはorg.apache.commons.math3.primes.Primesのように、あなたの素数を見つけるために、十分に確立APIを使用したほうが良いです。これはあなたの例では次のように使用することができる方法nextPrime(int n)を提供します:

ArrayList<Integer> a = new ArrayList<Integer>(limit); 

for(int i = 1; i <= limit; i = Primes.nextPrime(i)) 
{ 
    a.add(i++); 
} 
関連する問題