Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I check all the prime numbers in a for loop?

I want my program to take an integer and put every prime number up to that integer into an ArrayList. Logically I can’t find why it doesn’t work.

import java.util.ArrayList;

public class primenumbers {
    public static void main(String[] args) {

        int totalNumber = 1000;
        ArrayList<Integer> numbers = new ArrayList<>();

        for(int i = 1; i <= totalNumber; i++){
            boolean isPrime = true;

            for(int j = i-1; j >= 1; j--){
                if (i % j == 0){
                    isPrime = false;
                }else if(isPrime = true){
                    numbers.add(i);
                }
            }
        }

        System.out.println(numbers);
    }
}

What it ends up doing is putting every number up to 1000 repeatedly into the list and printing it out. The nested for loop checks against every number smaller than the original for loop and checks if it has a remainder. I would think that would work as a prime check.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

You have two bugs. One is testing i % 1 == 0 when j = 1 because your loop test was j >= 1 – should have been j > 1. Second was testing isPrime before your primality test is complete (and with an unfortunate typo }else if(isPrime = true){ assigns true to isPrime and evaluates to true, use if(isPrime) or if(isPrime == true) if you must – it still needs to be tested after you loop through all i % j tests). Fixing that, should look something like

public static void main(String[] args) {
    int totalNumber = 1000;
    ArrayList<Integer> numbers = new ArrayList<>();

    for (int i = 1; i <= totalNumber; i++) {
        boolean isPrime = true;
        for (int j = i - 1; j > 1; j--) {
            if (i % j == 0) {
                isPrime = false;
            }
        }
        if (isPrime) {
            numbers.add(i);
        }
    }

    System.out.println(numbers);
}

And I then get

[1, 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, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading