//  Data Structures with Java by John R. Hubbard
//  Copyright McGraw-Hill, 2001
//  Example 1.6 on page 6
//  Using methods


public class Testing
{ public static void main(String[] args) 
  { System.out.println("n\tp(n)\tln(n)\t\t\tp(n)*ln(n)/n");
    final String DASHES18="\t------------------";
    System.out.println("------\t-----" + DASHES18 + DASHES18);
    int p=1;  // p = number of primes that are <= n
    for (int n=3; n<1000000; n += 2)
      if (isPrime(n))
      { ++p;
        if (p%5000>0) continue;
        double ln=Math.log(n);
        System.out.println(n + "\t" + p + "\t" + ln + "\t" + p*ln/n);
      }
    System.out.println("------\t-----" + DASHES18 + DASHES18);
  }
  
  private static boolean isPrime(int n)
  { int d=3;
    while (d<=Math.sqrt(n) && n%d>0)
      d += 2;
    if (n%d==0) return false;
    return true;
  }
}
