Implement Class That Computes All Primes Up To Some Integer N
Feb 5, 2014
I am working on a problem that computes primes. Here is the problem: You are going to implement a class that computes all the primes up to some integer n. The technique you are to use was developed by a Greek named Eratosthenes who lived in the third century BC. The technique is known as the Sieve of Eratosthenes. The algorithm is described by the following pseudocode:
create a queue and fill it with the consecutive integers 2 through n inclusive.
create an empty queue to store primes.
do {
obtain the next prime p by removing the first value in the queue of numbers.
put p into the queue of primes.
go through the queue of numbers, eliminating numbers divisible by p.
} while (p < sqrt(n))
all remaining values in numbers queue are prime, so transfer them to primes queue
You are to use the Queue interface provided. When you want to construct a Queue object, you should make it of type LinkedQueue. These classes are included. You should define a class called Sieve with the following public methods:
Sieve() - Constructs a sieve object.
void computeTo(int n) - This is the method that should implement the sieve algorithm. All prime computations must be implemented using this algorithm. The method should compute all primes up to and including n. It should throw an IllegalArgumentException if n is less than 2.
void reportResults() - This method should report the primes to System.out. It should throw an IllegalStateException if no legal call has been made yet on the computeTo method. It is okay for it to have an extra space at the end of each line.
int getMax() - This is a convenience method that will let the client find out the value of n that was used the last time computeTo was called. It should throw an IllegalStateException if no legal call has been made yet on the computeTo method.
int getCount() - This method should return the number of primes that were found on the last call on computeTo. It should throw an IllegalStateException if no legal call has been made yet on the computeTo method.
Your reportResults method should print the maximum n used and should then show a list of the primes, 12 per line with a space after each prime. Notice that there is no guarantee that the number of primes will be a multiple of 12. The calls on reportResults must exactly reproduce the format of the sample log. The final line of output that appears in the log reporting the percentage of primes is generated by the main program, not by the call on reportResults.
Here is my class Sieve. I am having difficulty getting all the primes into the proper queue:
public class Sieve {
private Queue<Integer> primes;
private Queue<Integer> numList;
private boolean computed = false;
private int max;
private int count = 0;
[Code] ....
When I input say, 20, I only get 2, 3, and 11 back as primes. Somewhere in the algorithm (lines 40-54) I seem to have gone awry, but I'm not certain where. Here are the other classes:
SieveMain:
// This program computes all the prime numbers up to a given integer n. It uses the classic "Sieve of Eratosthenes" to do so.
import java.util.*;
public class SieveMain {
public static void main(String[] args) {
System.out.println("This program computes all prime numbers up to a");
System.out.println("maximum using the Sieve of Eratosthenes.");
System.out.println();
class Program { public static void main (String[] args) { long max = 200; //add up all primes up to 200 long ans = 0; for(long x = 2; x < max; x++) { if(isPrime(x)) { ans += x;
[Code] ....
This code adds up all of the primes before a certain number (max). Unfortunately, it is much too slow when you get up to bigger numbers - how can I do this more efficiently.
I found this method from the same link from which I found the Pandigital method. This method uses the algorithm of sieve of eratosthenes who was a greek mathematician and showed how to find prime numbers by taking an individual number and finding the multiples of it and cut them out for they will not be a prime number. From what I've seen this program gives the results much faster than the traditional way of searching for prime numbers by diving that number by the digits upto half of that number and check for divisiblity.
Well, here's the code
public int[] ESieve(int upperLimit) { int sieveBound = (int)(upperLimit - 1) / 2; int upperSqrt = ((int)Math.Sqrt(upperLimit) - 1) / 2; BitArray PrimeBits = new BitArray(sieveBound + 1, true); for (int i = 1; i <= upperSqrt; i++) { if (PrimeBits.Get(i)) {
[Code] .....
As seen from the full program on the site [URL] .... this program was formely writen in C++ and from there I've scrapped out this method as the syntax are corresponding to that of Java, but one problem I faced was in finding the BitArray class in Java. I was unable to understand the approach of this program to find the prime numbers.
I have to write a program that computes factorials up to 50
public static void main(String[] args) { int [] a= new int [100]; for(int n=0; n<=50; n++) { double factorial = 1; for (int multiplier=1; multiplier<=50; multiplier++)
[Code] ....
I have this as my code so far I just don't know how to incorporate the array in there which i need to do as well as I dont get why all the output comes out for every single thing . IT will write 1 factorial and display all the factorials up to 50 and do the same pattern over and over again.
I would like to implement a variable in a class that is used in another class, how can I do that?
I have a Mall class and a Customer class I would like to associate the position of the customer that is in the Mall class and also implement the same in the Customer class.
Here is a small part of the code without all the methods.
//the two objects Mall m = new Mall("RandomMall",50,30); Customer c1= new Customer("Jack",1240); //the first part of the mall class without the methods class Mall{ private String name; private int width,length; String[][]grid = new String[width][length];
I'm writing a simple queue program using a netbeans as a GUI program I've used netbeans GUI editor to create the GUI my main problem was I've written the queuing code to a button function it works but it runs only once and the queue becomes empty on the second run. So I implemented a class which will create the queue outside the button click event but when I do that I get a Symbol not found: method error . The place where I get the error:
I am a beginner at Java programming. how to implement my own String class, but I have to provide my own implementation for the following methods:
public MyString1(char[ ] chars) public char charAt(int index) public int length( ) ublic MyString1 substring(int begin, int end) public MyString1 toLowerCase( )
[code]....
I have looked through the API, but I don't really understand where to start.
While learning how to implement the class DynamicArrayStack, I've run into some operators and syntax I'm unfamiliar with!
public class DynamicArrayStack{ protected int capacity public static int MINCAPACITY=1<<15; protected int[] stackRep; protected int top = -1; //initializes stack to use an array of default length public DynamicArrayStack() this(CAPACITY)
I am trying to do this program. it compiles and everything but the numbers are not coming out right. Heres the problem.
Write a program that computes the tax and tip on a restaurant bill. The program should use JOptionPane to ask the user to enter the charge for the meal. The tax should be 6.75 percent of the meal charge. The tip should be 15 percent of the total after adding the tax. Display the meal charge, tax amount, tip amount, and total bill on the screen.
import javax.swing.JOptionPane; public class Bill { public static void main(String[] args) { double mealPurchase = 0; mealPurchase = Double.parseDouble(JOptionPane.showInputDialog(nul l, " Enter meal total: "));
how to 'implement' an interface and 'extend' a class. Now I want to try and recall the information by memory without using any reference material. Implementing an interface...
Java Code: //This interface will hold information for cell phones//Like saying... you can't BE a cell phone unless you have this information, at the very least
public interface CellInfo { public void model(); public void make(); public void androidVer();
}
//Now I implement the interface for a class called Galaxy, which is a class about a specific phone
public class Galaxy implements CellInfo public void model() { System.out.println("I'm a Galaxy S5."); }
public void make() { System.out.println("I'm made by Samsung.");
I'm writing this super simple code as I follow along in this java textbook, and I don't know why it's giving me an error in my tester program!
CashRegister.java
public class CashRegister //a cash register totals up sales and computes change due { private double purchase; private double payment; /**establishes instance variables "purchase" and "payment" and assigns them as doubles to store the two amounts later on. the assignment as private makes it so ONLY methods in this class can access these instance variables*/
This assignment uses the following description to implement a Dialog class for the Leap Year Problem. We need to decompose this problem into 2 classes:
1.The Date.java class: is a public class that represents a date composed of a month , day, and a year. So you need to declare month, day, and year as integers. Date has 1 constructor and 4 methods. Write the constructor for Date which has 3 parameters: int m, int d, int y ; (As an example of a constructor with 2 parameters for example chapter 3 page 152 code listing 3-13 has a perfect example for you to use which is the BankAccount.java.) and the 4 methods:
"dayIs()" which returns a day. It has no parameter. "monthIs()" which returns a month. It has no parameter. "yearIs()" which returns a year. It has not parameter. "isLeapYear()" which returns a boolean value.
"isLeapYear()" has one parameter year and returns a boolean. Write the method isLeapYear() knowing that a year is defined to be a leapyear it is a multiple of 4, and if it is is a multiple of 100, it must also be a multiple of 400. isLeapYear() thus decides when a year is a leap year. (see the discussion on "Hints for Assign5" to discover specific examples of a LeapYear).
The purpose of the Date.java is to decide whether a year is a leap year. Here is a definition of when a year is considered a leap year :
-year y1 is a leap year if it is multiple of 4. -year y1 is a leap year if it is a multiple of 100, it must be a multiple of 400. -Otherwise y1 is not a leap year.
2. The DateJDialog.java class: implements the GUI. Please use the Dialog boxes developed in the book in chapter2 in pages 99-100 in the code-listing 2-32 (NamesDialog.java) for input and output.
Remember that you will prompt the user to enter: -a month; -a day; -a year
And out of these 3 you will be able to create a Date. Then you will use the dialog box to tell the user whether the year entered was a leapyear or not a leapyear.
Remember that we defined in 1- what it means a year is a leap year or not a leap year.
Do not forget to compile the 2 java files. To verify that the DateJDialog.java works, in TextPad after you compile DateJDialog.java, Click on Tools, Click on "Run Java Application".
When you have completed the assignment, please remember to submit Date.java and DateJDialog.java.
I am trying to implement this method in another class but I'm not sure how to do so. My attempt is:
public getCalls(){ return getCalls(); }
When I run the program it sends the following exception:
Exception in thread "main" java.lang.StackOverflowError at FibonacciForget.getCalls(FibonacciForget.java:14) and it highlights the [return getCalls();] part.
What is the correct way to implement the getCalls() method?
Below is the requirements and code. I am getting the error CODELAB ANALYSIS: LOGICAL ERROR(S)We think you might want to consider using: >
Hints:
-Correct solutions that use equals almost certainly also uses high -Correct solutions that use equals almost certainly also uses low
Assume the existence of a Widget class that implements the Comparable interface and thus has a compareTo method that accepts an Object parameter and returns an int . Write an efficient static method , getWidgetMatch, that has two parameters . The first parameter is a reference to a Widget object . The second parameter is a potentially very large array of Widget objects that has been sorted in ascending order based on the Widget compareTo method . The getWidgetMatch searches for an element in the array that matches the first parameter on the basis of the equals method and returns true if found and false otherwise.
public static boolean getWidgetMatch(Widget a, Widget[] b){ int bot=0; int top=b.length-1; int x = 0; int y=0; while (bot >= top)
how it is decided which class will implement a session listener interface? Which class will implement HttpSessionListener? Which one will implement HttpSessionActivationListener, HttpSessionBindingListener or HttpSessionAttributeListener?
How do you enforce any class which implements an interface should also implement comparable too? Say for instance you may have an interface
public interface Task { ... } public class DoThis implements Task { ... } public class DoThis1 implements Task { ... }
I want all of the classes which implements the interface Task to implement comparable too. Of course I can just say implements Task, Comparable. But is there something which we could do from interface level, i mean interface Task level?
I have been researching the Iterator and making a class implement iterable. I have seen this example shown below and was wondering how I could change this so that iterable() is not called upon in the main. I would like to be able to make a method that returns an instance of a class that implements the Iterator interface hopefully an inner class. This is because my program will not have a main and will be supplied with a main that includes a new Object with will use the iterator method.
import java.util.*; public class IteratorDemo { public static void main(String args[]) { // Create an array list ArrayList al = new ArrayList(); // add elements to the array list al.add("C");
[Code] ....
This is all I have been able to understand from what I want to do. This does not work and this is what I am trying to achieve
public class MyArrayList implements Iterable { public static final int DEFAULT_SIZE = 5; public static final int EXPANSION = 5; private int capacity; private int size; private Object[] items;
I am trying to implement the following example to override the equality and hashCode method if the class has reference type member. I do get the expected result "true" for equal and "false" for non-equal objects. But the print statement in the Circle's equal method is not executed when the objects values are not equal. I don't know what i am missing, though i get the equality result "false" as expected for non equal objects.
class Point{ private int x, y; Point (int x, int y) { this.x =x; this.y = y;
Okay, I am supposed to implement the functionalities of the Set class using a private data member of type ListReferencedBased<E>,how the ListReferenceBased works with what I am trying to accomplish.I am trying to complete Set.java, and I have barely started and much of the code doesn't work. ListReferenceBased was given to me completed.
import java.util.Iterator; pubic class ListReferenceBased<E> implements ListInterface<E>, Iterable<E>{ /** reference to the first element of the list */ private Node<E> head; /** number of items in list */ private int numItems;
I write a small program. I want post my integer variables in the next class. Here a code(I wanna change answer color):
Main class(pagrindine.java): import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; //Mokinio rinkinukas su skaiciofke kur gali keisti atsakymo spalva, pabandyti sukurti uzrasu knygute.
[code]....
So, I want to post variables r,g,b from class slideris.java in the pagrindiness.java.
I have to write a client and server class for a UDP protocol sending integer numbers by UDP packets. So far i have this;
Client Code:
import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
[Code] ....
But i now need to change this so that:
The client;
1. Reads an integer from keyboard input and stores its value in a UDP packet. // byte[] send = ByteBuffer.allocate(4).putInt(num).array(); ???
2. Sends the UDP packet to the server, on port number 1999;
3. Listens for UDP packets from the server (until it receives a packet with a non-positive number; see step (b) below). While listening:
(a) Once it receives a UDP packet from the server, it subtracts 2 from the integer value num contained in it. // int num = ByteBuffer.wrap(receive).getInt(); ??? (b) Checks the integer value num: if the value is greater than 0 (num>0) then the client stores it in a new UDP packet and sends the packet to the server; otherwise (num<=0) the client terminates.
The Server;
1. Listens on port 1999;
2. For each UDP packet it receives from a client: (a) extracts the integer value n contained in it; (b) decreases the value of n by 2; (c) sends back to the client a UDP packet containing the new value of n.
1)A factorial of a number X is equal to X*(X-1)*(X-2)*...*1.For example,3! is equal 3*2*1=6.Create a class called Factorial Algorithm which will compute and print the factorial of an integer number on the screen
2)Write a Java program to accept eight integers and a search element from the user and display whether the element is found or not.(Hint:use bubble sorting and binary search)
public class MyInteger { private int value; public MyInteger(int number){ value = number; System.out.println("Constructor created with value of " + value);
[code]....
I can't seem to get the value for integer1 and integer2 to pass with the setValue method. I get a runtime error stating the I need to have an int value for these two integers.