58 lines
1.5 KiB
Dart
58 lines
1.5 KiB
Dart
|
// help for the implementation from:
|
||
|
// https://www.geeksforgeeks.org/program-to-find-the-nth-prime-number/
|
||
|
// by Ujjwal Kumar Bhardwaj
|
||
|
|
||
|
class NthPrime {
|
||
|
// function to check if given number is prime or not
|
||
|
// basic idea is number not divided by any primes are primes
|
||
|
// bool isPrime(int k) {
|
||
|
// // Corner cases
|
||
|
// if (k <= 1) return false;
|
||
|
// if (k == 2 || k == 3) return true;
|
||
|
|
||
|
// // below 5 there are only two prime numbers 2 and 3
|
||
|
// if (k % 2 == 0 || k % 3 == 0) return false;
|
||
|
|
||
|
// // Using concept of prime number can be represented
|
||
|
// // in form of (6*k + 1) or (6*k - 1)
|
||
|
// for (int i = 5; i * i <= k; i = i + 6)
|
||
|
// if (k % i == 0 || k % (i + 2) == 0) return false;
|
||
|
|
||
|
// return true;
|
||
|
// }
|
||
|
|
||
|
// int prime(int n) {
|
||
|
// if (n == 0) throw new ArgumentError('There is no zeroth prime');
|
||
|
// int i = 2;
|
||
|
|
||
|
// while (n > 0) {
|
||
|
// // each time if a prime number is found decrease n
|
||
|
// if (isPrime(i)) n--;
|
||
|
|
||
|
// i++; // increase the integer and go ahead
|
||
|
// }
|
||
|
// i -= 1; // since decrement of k is being done before
|
||
|
// // Increment of i, so i should be decreased by 1
|
||
|
// return i;
|
||
|
// }
|
||
|
|
||
|
bool isPrime(int n) {
|
||
|
for (int start = 2; start < n; start++) {
|
||
|
if (n % start == 0) return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
int prime(int n) {
|
||
|
if (n == 0) throw new ArgumentError('There is no zeroth prime');
|
||
|
|
||
|
int counter = 0, number = 2;
|
||
|
|
||
|
for (; counter < n; number++) {
|
||
|
if (isPrime(number)) counter++;
|
||
|
}
|
||
|
|
||
|
return --number;
|
||
|
}
|
||
|
}
|