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