将范围中的所有素数添加到数组

时间:2017-06-13 20:01:41

标签: java android arrays for-loop

一般问题:我将把评论放在我的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.

在输入其余条款之前,有没有办法设置数组的一部分?如果没有,是否可以编辑程序以便显示这些数字作为素数?

2 个答案:

答案 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 :(得分:1)

最好使用完善的API来查找素数,例如org.apache.commons.math3.primes.Primes。它为您提供了一个方法nextPrime(int n),您可以在示例中使用这个方法:

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

for(int i = 1; i <= limit; i = Primes.nextPrime(i))
{
    a.add(i++);  
}