今天课上李洋老师讲到求素数时,讲了一种新的方法,一开始听得我一脸懵逼,但当我理解的时候,眼前一亮,老师的算法省去了不少步骤,话不多说,附上题目:求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,少的可不是一点点。