李洋疯狂C语言之求素数的方法

来源:互联网 发布:iphone淘宝 编辑:程序博客网 时间:2024/05/18 02:26

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