Skip to content

Commit c50806a

Browse files
committed
Prime Mover
1 parent f161981 commit c50806a

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

src/medium/PrimeMover.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package medium;
2+
3+
/**
4+
* Have the function PrimeMover(num) return the numth prime number.
5+
* The range will be from 1 to 10^4.
6+
* ---
7+
* For example: if num is 16 the output should be 53 as 53 is the 16th prime number.
8+
*/
9+
public class PrimeMover {
10+
11+
/**
12+
* Check if a given number is a prime number.
13+
*
14+
* @param num input number
15+
* @return true if is a prime number
16+
*/
17+
private static boolean isPrimeNumber(int num) {
18+
// prime numbers are greater than 1
19+
if (num <= 1) {
20+
return false;
21+
}
22+
// 2 is an only even prime number
23+
// http://mathworld.wolfram.com/EvenPrime.html
24+
if (num == 2) {
25+
return true;
26+
}
27+
// eliminate all even numbers to reduce time complexity
28+
// (cannot be a prime number if is divisible by 2)
29+
if (num % 2 == 0) {
30+
return false;
31+
}
32+
// no need to check the entire range from 0 to num
33+
// (square root of num) + 1 is the sufficient upper limit
34+
// which greatly reduces time complexity
35+
double upper = Math.sqrt(num) + 1;
36+
// since the even numbers are eliminated, we can check the odd numbers only
37+
for (int i = 3; i < upper; i += 2) {
38+
if (num % i == 0) {
39+
// not a prime number
40+
return false;
41+
}
42+
}
43+
// must be a prime number!
44+
return true;
45+
}
46+
47+
/**
48+
* Prime Mover function.
49+
*
50+
* @param num input number
51+
* @return Nth prime number where N = num
52+
*/
53+
private static int primeMover(int num) {
54+
int i = 1;
55+
int primes = 0;
56+
while (primes < num) {
57+
if (isPrimeNumber(i)) {
58+
primes++;
59+
}
60+
i++;
61+
}
62+
return i - 1;
63+
}
64+
65+
/**
66+
* Entry point.
67+
*
68+
* @param args command line arguments
69+
*/
70+
public static void main(String[] args) {
71+
int result1 = primeMover(9);
72+
System.out.println(result1);
73+
int result2 = primeMover(100);
74+
System.out.println(result2);
75+
}
76+
77+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy