1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Sum of prime numbers taken from the command-line

  1. Oct 26, 2011 #1
    1. The problem statement, all variables and given/known data

    Write a program that takes a command line argument N and a sequence of N positive integers and prints the numbers that are prime only, followed by their sum.

    2. Relevant equations

    for loop

    3. The attempt at a solution

    This has been a vexing program to think of. We were asked to write a program that takes an integer N and outputs true if N is prime and false if N is not prime. The code is as follows:

    Code (Text):
    public class Primes
    {
        public static void main(String[] args)
        {
            int numb = Integer.parseInt(args[0]);
            int i;
            boolean ifPrime;
           
            for (i = 2; i < numb; i++)
            {
                int n = numb % i;
                if (n == 0)
                {
                    ifPrime = false;
                    System.out.println(numb + " is not a prime number, hence " + ifPrime);
                    break;
                }
            }
                if (i == numb)
                {
                    ifPrime = true;
                    System.out.println(numb + " is a prime number, hence " + ifPrime);
                }
        }
    }
    Although we haven't actually covered the break command, but I didn't know how to code it without it.

    Now, the question above is a little confusing to me, particularly the wording. Does it want to take a command-line value N then N numbers afterward or is it something else?

    The way I thought of it is to first write a method of type boolean that studies the integer(s) and then returns true or false if prime or not. We enter a loop in the main method that loops over args where i is an initialization variable (int), then use if to compare the returned boolean value if. But here's where I hit the wall. What's next? How do you continue from here?

    This is my last question, I hope.
     
  2. jcsd
  3. Oct 26, 2011 #2
    As far as the break line. You proved it false, so the break would kill the for loop. This would be a faster and optimal code to get it out of that for loop.
    Take numb = 1 billion, 2 would prove it not prime. Your break command got it out of that for loop within 1 iteration. However without it, you would loop for 1 billion iterations.
    You can just keep proving it false over and over. Doesn't hurt. Not on the scale your doing it. Highly doubt your teacher cares. :)

    Now key thing here, you just proved it false. Doesn't matter if "i" equals the original number. You already know its false. You could of finished the for loop and took "i" to the full original value.

    You exit the for loop with isPrime = false;

    Use that boolean.
     
  4. Oct 27, 2011 #3

    Mark44

    Staff: Mentor

    As far as the command line is concerned, the idea is that you would start your program something like this:

    Code (Text):
    C:\Primes 5 12 13 28 5 61
    The first number, 5, indicates how many numbers there are in the sequence following it. The five numbers after 5 are the sequence that your program should operate on.

    Your program should display the primes in that sequence; namely 13, 5, and 61
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Sum of prime numbers taken from the command-line
  1. Determine prime number (Replies: 8)

Loading...