dart-exercism/nth-prime/lib/nth_prime.dart

58 lines
1.5 KiB
Dart
Raw Permalink Normal View History

2024-10-14 11:37:17 +02:00
// 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;
}
}