Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Name: List of prime numbers-store prime factors in array
- * @author LinChuWen
- * Date: 2014.10.16
- *
- * NCHU EE,course number:2335
- * course name: Object Oriented Language
- * Textbook: Big Java:Late Objects-Cay S. Horstmann
- * Problem: P4.18
- * Description: Enter an integer "n", then prints out all prime numbers up to that integer.
- */
- import java.util.*;
- public class HW3_P4_18_v3 {
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- int n;
- System.out.print("Please enter an integer: ");
- while(input.hasNext()){
- n=input.nextInt();
- long startTime = System.currentTimeMillis();
- if(n>4)
- list_prime(n);
- else
- n_less_than_5(n);
- long endTime = System.currentTimeMillis();
- long totTime = endTime - startTime;
- System.out.println("Using Time:" + totTime + " ms");
- System.out.print("Please enter an integer: ");
- } //while end
- input.close();
- } //main end
- static void list_prime( int number ){
- System.out.printf("2\n3\n");
- int d_sqrt; //square root of dividend
- int dividend; //dividends that counting up to user's input "n"
- int[] prime_factors = new int[1000000]; //array that store prime factors
- prime_factors[0]=2;prime_factors[1]=3; //set first two prime factors to "2" and "3"
- int index=1; //index of array "prime_factors3u6j5/4[]"
- int cnt; //counter use in small for loop
- boolean prime; //flag use in small for loop
- for(dividend=5;dividend<=number;dividend+=2){
- prime=true;
- d_sqrt=(int)Math.sqrt(dividend);
- for(cnt=1;cnt<=index;cnt++){
- if(prime_factors[cnt]>d_sqrt)
- break;
- if(dividend%prime_factors[cnt]==0){
- prime=false;
- break;
- } //if end
- } //small for end
- if(prime){
- System.out.println(dividend);
- index++;
- prime_factors[index]=dividend;
- } //if(prime) end
- } //big for end
- return;
- } //list_prime() end
- static void n_less_than_5( int n ){
- if(n<0)
- System.out.println("Please enter a positive integer!");
- else if(n==0 || n==1)
- System.out.println("No prime numbers up to " + n);
- else if(n==2)
- System.out.println(2);
- else if(n==3 || n==4)
- System.out.printf("2\n3\n");
- return;
- } //n_less_than_5() end
- } //class end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement