Sum of prime numbers taken from the command-line

Click For Summary
SUMMARY

The discussion focuses on creating a Java program that takes a command-line argument N, followed by N positive integers, and identifies which of those integers are prime. The provided code snippet demonstrates a basic implementation using a for loop to check for primality. The discussion clarifies that the first command-line argument indicates the number of subsequent integers to evaluate, and emphasizes the importance of using a boolean variable to track the primality status efficiently. Key insights include the use of the break statement to optimize the loop when a non-prime number is found.

PREREQUISITES
  • Java programming fundamentals
  • Understanding of command-line arguments in Java
  • Basic knowledge of prime number algorithms
  • Familiarity with boolean logic and control flow statements
NEXT STEPS
  • Implement a method to check for prime numbers in Java
  • Explore Java's command-line argument handling
  • Learn about optimizing loops in Java for performance
  • Investigate advanced algorithms for prime number generation
USEFUL FOR

Java developers, computer science students, and anyone interested in algorithm optimization and command-line programming.

Hiche
Messages
82
Reaction score
0

Homework Statement



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.

Homework Equations



for loop

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:
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.
 
Physics news on Phys.org
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.
 
As far as the command line is concerned, the idea is that you would start your program something like this:

Code:
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
 

Similar threads

  • · Replies 32 ·
2
Replies
32
Views
5K
  • · Replies 80 ·
3
Replies
80
Views
10K
  • · Replies 7 ·
Replies
7
Views
3K
Replies
33
Views
4K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 36 ·
2
Replies
36
Views
2K
  • · Replies 28 ·
Replies
28
Views
5K