今天課上李洋老師講到求素數時,講了一種新的方法,一開始聽得我一臉懵逼,但當我理解的時候,眼前一亮,老師的算法省去了不少步驟,話不多說,附上題目:求100到200之間的素數。
輸入:無
計算: 求素數
輸出: 輸出素數 每4個一行 每個數占4位
代碼:
void isPrime(int i){ int j;int flag = 0;int count = 0;for (i = 100; i <= 200; i++){int k = sqrt(i);flag = 0;for (j = 2; j <= k; j++) /*只要考慮開方之前的數*/{if (0 == i % j){flag = 1;break; // 只會跳出一層循環} }if(1 != flag){if (0 == count++ % 4)putchar ('\n');printf ("%4d", i);}}putchar ('\n');
}
當 i 越大,這種方式的優越性就越明顯,舉個栗子,當 i 取10000時,開方為100,也就是說只要考慮2到100就可以了,而我會的方法就要考慮2到10000,少的可不是一點點。