1

I want to be able to display the next prime number each time the button is clicked but cannot find a way for it to work. Anybody help please?

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button primeButton = (Button) findViewById(R.id.primeButton);
        primeButton.setOnClickListener(
            new Button.OnClickListener(){
                public void onClick(View v){
                    TextView primeText = (TextView) findViewById(R.id.primeText);
                    int max =  500;
                    for(int i=2; i<=max; i++) {
                        boolean isPrimeNumber = true;
                        for (int j = 2; j <= i; j++) {
                            if (i % j == 0 ) {
                                isPrimeNumber = false;
                                break;
                            }

                        }
                        if (isPrimeNumber){
                            primeText.setText(Integer.toString(i));
                        }
                    }
                }
            }
        );
    }
}
Ninjakannon
  • 3,751
  • 7
  • 53
  • 76
Oyee
  • 41
  • 3
  • 10
  • different ways to structure the for loop but nothing seems to work, i am relatively new to android programing. – Oyee Apr 06 '15 at 12:36
  • Make the `i` and `j` a class filelds. – Stan Apr 06 '15 at 12:41
  • Hint - If you're trying to find the next prime number, how does the button know what the current prime is? – mjhouseman Apr 06 '15 at 12:43
  • Actually its better to extract all the code from `onClick()` into a class/instance method. – Stan Apr 06 '15 at 12:44
  • I have tried to do that but do not know how to @mjhouseman as I said relatively new so all help is appreciated :) – Oyee Apr 06 '15 at 12:50
  • Great @Stan thanks, but could you please show an example, it would help very much. – Oyee Apr 06 '15 at 12:51
  • @Oyee, you need to do a little Googling. We can't walk you through how to do something like this, but we can tell you what to look for... which we did :) – mjhouseman Apr 06 '15 at 12:54
  • I have done that, but all information that exists is ordinary java not android java. @mjhouseman – Oyee Apr 06 '15 at 12:57

2 Answers2

3

Try this

public class MainActivity extends Activity {

 Button b;
 int max = 500;
 TextView vTextView;
 int j = 2;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  b = (Button) findViewById(R.id.button1);
  vTextView = (TextView) findViewById(R.id.textView1);

  b.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub

    for (int i = j; i <= max; i++) {
     if (isPrimeNumber(i)) {
      vTextView.setText(i+"");
      j = i+1;
      break;
     }
    }

   }
  });

 }

 public boolean isPrimeNumber(int number) {

  for (int i = 2; i <= number / 2; i++) {
   if (number % i == 0) {
    return false;
   }
  }
  return true;
 }

}
Oyee
  • 41
  • 3
  • 10
Nivedh
  • 971
  • 1
  • 8
  • 19
  • it will print the next prime number one by one upto 500 – Nivedh Apr 06 '15 at 12:58
  • Its correct it prints next prime numbers on each button click – George Thomas Apr 06 '15 at 13:06
  • It is correct, thank you @Niv only problem the count starts from number 1 not 2. – Oyee Apr 06 '15 at 13:09
  • Then change int j = 1; to int j = 2; Please upvote his answer – George Thomas Apr 06 '15 at 13:22
  • I made an edit already, It is stil pending @GeorgeThomas, I don't know if I should place a new answer or create an edit as I earlier did because I'm fairly new to this forum. – Oyee Apr 06 '15 at 13:37
  • @Oyee you dont need to create a new answer. The logic of Niv 's is pefect so just click the upward arrow above the number it helps other users find best answer to your question – George Thomas Apr 06 '15 at 15:45
  • Niv & @GeorgeThomas can you guys please help me with another question? Would really appreciate it. http://stackoverflow.com/questions/29498565/datetime-does-not-show-up – Oyee Apr 18 '15 at 18:00
0

To find out a prime number, prime numbers between two numbers and sum of a prime number

public class MainActivity extends AppCompatActivity {
private EditText etInput;
private EditText et_from, et_to;
private Button btnCheck, btn_print;
private TextView tvResult;
private int inputnumber;
private int fromNumber, toNumber;
private boolean isPrimeNumber = true;
private TextView tv_prime_sum;
private int primeNumbersSum;
private TextView tv_check;

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViews();
    btnCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!(etInput.getText().toString().trim() != null && etInput.getText().toString().trim().length() > 0)) {
                etInput.setError("Please enter the number");

            } else {
                inputnumber = Integer.parseInt(etInput.getText().toString());
                for (int i = 2; i <= inputnumber / 2; i++) {
                    if (inputnumber % i == 0) {
                        isPrimeNumber = false;
                        break;
                    }
                }
                if (isPrimeNumber) {
                    tv_check.setText("The given number " + inputnumber + " is a prime number");
                } else {
                    tv_check.setText("The given number " + inputnumber + " is not a prime number");
                }
                isPrimeNumber = true;
            }
        }
    });

    btn_print.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!(et_from.getText().toString().trim() != null && et_from.getText().toString().trim().length() > 0)) {
                et_from.setError("Please enter the number");

            } else if (!(et_to.getText().toString().trim() != null && et_to.getText().toString().trim().length() > 0)) {
                et_to.setError("Please enter the number");
            } else {

                fromNumber = Integer.parseInt(et_from.getText().toString());
                toNumber = Integer.parseInt(et_to.getText().toString());
                if (fromNumber > toNumber) {
                    fromNumber = fromNumber - toNumber;
                    toNumber = fromNumber + toNumber;
                    fromNumber = toNumber - fromNumber;
                }
                StringBuilder stringBuilder = new StringBuilder();

                for (int j = fromNumber; j <= toNumber; j++) {
                    for (int i = 2; i <= j / 2; i++) {
                        if (j % i == 0) {
                            isPrimeNumber = false;
                            break;
                        } else {
                            isPrimeNumber = true;
                        }
                    }
                    if (isPrimeNumber) {
                        Log.v("Primenumber", "list" + j);
                        primeNumbersSum = primeNumbersSum + j;
                        stringBuilder.append(j);
                        stringBuilder.append(",");
                    } else {
                    }
                }
                tvResult.setText(stringBuilder.toString());
                tv_prime_sum.setText("Total sum of prime numbers: " + primeNumbersSum);
                isPrimeNumber = true;
                primeNumbersSum = 0;


            }
        }
    });
}

private void findViews() {
    etInput = findViewById(R.id.et_input);
    btnCheck = findViewById(R.id.btn_check);
    tvResult = findViewById(R.id.tv_result);
    tv_prime_sum = findViewById(R.id.tv_prime_sum);
    et_from = findViewById(R.id.et_from);
    et_to = findViewById(R.id.et_to);
    btn_print = findViewById(R.id.btn_print);
    tv_check = findViewById(R.id.tv_check);

}

}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
  <EditText
    android:id="@+id/et_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="enter the number"
    android:inputType="number"
    android:visibility="visible" />

<Button
    android:id="@+id/btn_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et_input"
    android:layout_centerHorizontal="true"
    android:layout_margin="10dp"
    android:text="Check" />
<TextView
    android:id="@+id/tv_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/btn_check"
    android:layout_centerHorizontal="true"
    android:layout_margin="10dp"
    android:text="print the number is prime or not" />

   <EditText
    android:id="@+id/et_from"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tv_check"
    android:hint="from number"
    android:inputType="number" />

<EditText
    android:id="@+id/et_to"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et_from"
    android:hint="to number"
    android:inputType="number" />

<Button
    android:id="@+id/btn_print"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et_to"
    android:layout_centerHorizontal="true"
    android:layout_margin="10dp"
    android:text="Print" />
  <TextView
    android:id="@+id/tv_result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/btn_print"
    android:layout_centerHorizontal="true"
    android:text="prints the list of prime numbers" />

<TextView
    android:id="@+id/tv_prime_sum"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tv_result"
    android:layout_centerHorizontal="true"
    android:layout_margin="10dp" />
</RelativeLayout>
viveksuggu
  • 737
  • 2
  • 7
  • 12
  • Create a xml file the btnCheck will find out the number is a prime number or not and the btn_print will print all the prime number between entered two numbers and it's sum – viveksuggu Sep 24 '18 at 11:25