55 lines
1.4 KiB
Markdown
55 lines
1.4 KiB
Markdown
---
|
|
title: 10001st prime
|
|
localeTitle: 10001st
|
|
---
|
|
## المشكلة 7: 10001st رئيس الوزراء
|
|
|
|
### طريقة:
|
|
|
|
* الرقم الأولي هو رقم مقسوم على 1 ونفسه.
|
|
* يمكننا العثور على رقم أولي إذا كان غير قابل للقسمة من قبل أعداد أولية أصغر من نفسها.
|
|
|
|
### حل:
|
|
|
|
`function nthPrime(n) {
|
|
|
|
//Primes array which will store all the prime numbers
|
|
const primes = [2];
|
|
|
|
//Num is the number we want to check
|
|
let num = 3, isPrime = true;
|
|
|
|
//Looping until primes array is equal to n
|
|
while (primes.length < n){
|
|
|
|
//All the primes numbers of a number is always <= its square root
|
|
let max = Math.ceil(Math.sqrt(num));
|
|
|
|
for (let i = 0; primes[i] <= max; i++){
|
|
if (num % primes[i] == 0) {
|
|
|
|
//Looping till we find the prime
|
|
isPrime = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//if Prime found, push it to the array
|
|
if (isPrime) primes.push(num);
|
|
isPrime = true;
|
|
|
|
//An optimization technique, since we know of all even numbers only 2 is a prime number, we can skip the rest
|
|
num+=2;
|
|
}
|
|
|
|
//Returning the last number
|
|
return primes[primes.length-1];
|
|
|
|
}
|
|
`
|
|
|
|
\- [تشغيل الكود](https://repl.it/@ezioda004/Project-Euler-Problem-7-10001st-prime)
|
|
|
|
### المراجع:
|
|
|
|
* [ويكيبيديا](https://en.wikipedia.org/wiki/Prime_number) |