Results 1 to 8 of 8
- 02-28-2011, 02:34 AM #1
Member
- Join Date
- Feb 2011
- Posts
- 2
- Rep Power
- 0
generating prime numbers...using an array
I am trying to complete a class assignment and am currently unsuccessful...the assignment requires:
This program requires that you find all of the primes between 1 and some number that you allow the user to input.
Fill an array with the consecutive integers between 1 and the top number.
Identify 2 as the first prime and then remove all numbers that are evenly divisible by 2 (use modulus function).
Go to the next number remaining on the list (the next prime); now remove all of the numbers divisible by it.
Continue until you have only prime numbers in your list. When can you stop?
Now, write a Java program that generates all of the primes between 2 and some upper bound (greater than 50) that you allow the user to enter. As intermediate data, print one line for each divisor you eliminate along with the numbers eliminated. For example:
2: 4 6 8 10 12 14 16 18...
3: 9 15 21 27
so far I have the following code, but it isn't working...
Scanner keyboard = new Scanner(System.in);
int size;
int sentinel = 0;
int [] numberArray;
System.out.println("Enter the size of the array from 1 to 100:");
size = keyboard.nextInt();
numberArray = new int[size];
//Fill the array.
for (int i=0; i<size; i++)
{
numberArray[i]=i+1;
}
//Identify 2 as the first prime number and then remove all numbers that are evenly divisible by 2
int baseNumber = 2;
for (int i=1; i<size; i++)
if (numberArray[i] != sentinel)
{
int base = numberArray[i];
System.out.print(base + ": ");
if (numArray[i]%baseNumber == 0)
{
System.out.print(numberArray[i] + " ,");
numberArray[i] = sentinel;
}
}
}
}
- 02-28-2011, 05:02 AM #2
Member
- Join Date
- Feb 2011
- Posts
- 18
- Rep Power
- 0
I dont know if its just me but i found your code quite confusing.
here is how i would do it:
ps. please use code tags around your codeJava Code:Scanner keyboard = new Scanner(System.in); int size; int [] numberArray; int [] out; System.out.println("Enter the size of the array from 1 to 100:"); size = keyboard.nextInt(); numberArray = new int[size]; //Fill the array. for (int i=1; i<size; i++) { numberArray[i]=i; } numberArray[1] = -1; //Identify 2 as the first prime number and then remove all numbers that are evenly divisible by 2 //start the for loop with 2 for (int i=2; i<size; i++){ //if the number has not already been discluded if(numberArray[i] != -1){ for(int j = 0; j < size; j++ ){ // if the number is a multiple of another number if(numberArray[j]%numberArray[i] == 0 && numberArray[j] != numberArray[i] ){ //disclude it numberArray[j] = -1; } } } } //disclude 2 numberArray[2] = -1; //print for(int i = 1; i < size; i ++){ if(numberArray[i] != -1) System.out.print(numberArray[i] + ", "); }
- 02-28-2011, 03:47 PM #3
Member
- Join Date
- Feb 2011
- Posts
- 2
- Rep Power
- 0
thank you very much! how do i get the code to output the excluded numbers as well...we are supposed to output the number: its excluded multiples
ex:
2: 4 6 8 10 etc
- 02-28-2011, 04:21 PM #4
Crossposted: trying to generate prime numbers
How to Ask Questions the Smart Way
Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!
- 03-01-2011, 04:04 AM #5
Member
- Join Date
- Feb 2011
- Posts
- 18
- Rep Power
- 0
you can change the code to make it more similar to yours and make it print as you go or you can edit the printing part on the pecie of code i made so it prints the multiples.
its just a simple matter of inserting another 'for' loop and multiplying the number by the increasing variable.Last edited by mr_guy; 03-01-2011 at 04:23 AM. Reason: Edit becuse of sunde887's post below
- 03-01-2011, 04:14 AM #6
- Join Date
- Jan 2011
- Location
- Richmond, Virginia
- Posts
- 3,069
- Blog Entries
- 3
- Rep Power
- 7
Please don't spoon feed. What does he learn from you providing the source code? Give him pseudocode or push him in the right direction, this way he will learn to solve problems more efficiently, with less help from others.
Also, the fill the array code will leave the first spot in the array null
it should be
Your method would produce something likeJava Code:for(int i = 1; i <= size; i++ //or for(int i = 0; i < size; i++){ numArray[i - 1] = i; }
Java Code:num[0] == 0 num[1] == 1 num[2] == 2 ... num[10] == 9
Last edited by sunde887; 03-01-2011 at 04:21 AM.
- 03-01-2011, 04:58 AM #7
This is performing the Sieve of Eratosthenes and I find it much easier to use an array of booleans.
- 03-01-2011, 05:30 AM #8
- Join Date
- Jan 2011
- Location
- Richmond, Virginia
- Posts
- 3,069
- Blog Entries
- 3
- Rep Power
- 7
Similar Threads
-
Prime Number - System print all the prime numbers ...
By pinkdreammsss in forum New To JavaReplies: 20Last Post: 04-26-2009, 01:50 AM -
prime numbers program
By i contra i in forum New To JavaReplies: 9Last Post: 01-15-2009, 07:22 AM -
Prime numbers
By tercius in forum New To JavaReplies: 3Last Post: 05-04-2008, 06:05 AM -
Prime numbers
By gapper in forum New To JavaReplies: 3Last Post: 02-07-2008, 10:09 AM -
generating random numbers in a 5x5 array.
By acidacid in forum New To JavaReplies: 3Last Post: 08-14-2007, 03:44 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks