Advertisement
Go-Ice

Sophomore Java Homework-P4.18 v3

Oct 16th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.27 KB | None | 0 0
  1. /**
  2.  * Name: List of prime numbers-store prime factors in array
  3.  * @author LinChuWen
  4.  * Date: 2014.10.16
  5.  *
  6.  * NCHU EE,course number:2335
  7.  * course name: Object Oriented Language
  8.  * Textbook: Big Java:Late Objects-Cay S. Horstmann
  9.  * Problem: P4.18
  10.  * Description: Enter an integer "n", then prints out all prime numbers up to that integer.
  11.  */
  12. import java.util.*;
  13. public class HW3_P4_18_v3 {
  14.    
  15.     public static void main(String[] args) {
  16.         Scanner input = new Scanner(System.in);
  17.         int n;
  18.        
  19.         System.out.print("Please enter an integer: ");
  20.         while(input.hasNext()){
  21.             n=input.nextInt();
  22.             long startTime = System.currentTimeMillis();
  23.            
  24.             if(n>4)
  25.                 list_prime(n);
  26.             else
  27.                 n_less_than_5(n);
  28.            
  29.             long endTime = System.currentTimeMillis();
  30.             long totTime = endTime - startTime;
  31.             System.out.println("Using Time:" + totTime + " ms");
  32.             System.out.print("Please enter an integer: ");
  33.         } //while end
  34.        
  35.         input.close();
  36.     } //main end
  37.    
  38.     static void list_prime( int number ){
  39.         System.out.printf("2\n3\n");
  40.         int d_sqrt;                 //square root of dividend
  41.         int dividend;               //dividends that counting up to user's input "n"
  42.         int[] prime_factors = new int[1000000]; //array that store prime factors
  43.         prime_factors[0]=2;prime_factors[1]=3;  //set first two prime factors to "2" and "3"
  44.         int index=1;                //index of array "prime_factors3u6j5/4[]"
  45.         int cnt;                //counter use in small for loop
  46.         boolean prime;              //flag use in small for loop
  47.        
  48.         for(dividend=5;dividend<=number;dividend+=2){
  49.             prime=true;
  50.             d_sqrt=(int)Math.sqrt(dividend);
  51.             for(cnt=1;cnt<=index;cnt++){
  52.                 if(prime_factors[cnt]>d_sqrt)
  53.                     break;
  54.                
  55.                 if(dividend%prime_factors[cnt]==0){
  56.                     prime=false;
  57.                     break;
  58.                 } //if end
  59.             } //small for end
  60.            
  61.             if(prime){
  62.                 System.out.println(dividend);
  63.                 index++;
  64.                 prime_factors[index]=dividend;
  65.             } //if(prime) end
  66.         } //big for end
  67.        
  68.         return;
  69.     } //list_prime() end
  70.    
  71.     static void n_less_than_5( int n ){
  72.         if(n<0)
  73.             System.out.println("Please enter a positive integer!");
  74.         else if(n==0 || n==1)
  75.             System.out.println("No prime numbers up to " + n);
  76.         else if(n==2)
  77.             System.out.println(2);
  78.         else if(n==3 || n==4)
  79.             System.out.printf("2\n3\n");
  80.         return;
  81.     } //n_less_than_5() end
  82.    
  83. } //class end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement