本文章來自我的個人網站,如感興趣,歡迎訪問我的個人網站:http://www.qingshuimonk.com/
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?
今天一口氣搞定了PE的三道題,其實還是不算太難的。
要求找到第10001個質數,有了之前做第三題的經驗,這道題要輕車熟路得許多。
主要思想是,每產生一個質數,記在一個數組裏,之後的數(只有奇數)用之前的質數去除,若能被整除則表明不是質數,若之前質數除完都不能整除,則表明這個數是質數。
算法:
void main() { int PrimeNum[10000], TotalPrime,j, n; PrimeNum[0] = 2; TotalPrime = 0; for(n = 3; ; n = n+2) { for(j = 0; j < = TotalPrime; j++) { if(n%PrimeNum[j] == 0)break; //不是質數 if(j == TotalPrime) { TotalPrime++; PrimeNum[TotalPrime] = n; } } if(TotalPrime == 10000)break; } }
這樣當產生到第10001個(數組裏是10000個)的時候輸出就可以了。整個程序用時0.80s.
應該有更簡單的方法的,不過今天實在太忙,沒功夫管了。