如何找到素数?

来源:互联网 发布:淘宝运营推广区别 编辑:程序博客网 时间:2024/06/11 06:18

        刚开始学C语言时,曾经遇到过要求素数的题,当时有源程序,可我怎么都看不懂,我一度把这道题列为最难题之一,是因为我弄不懂它的思想。素数是什么呢?素数其实就是除了它本身和1,不能被其他数整除。假设有一个数i,只要i不被从2到(i-1)的数整除,也就是取余为0时,它就不是素数。那么,我们可以定义一个标志位flag,令其为1时为素数,flag=0时自然就不是素数,这里可以想到做个for循环,取余为0时就跳出循环。此外一串数中要一个一个经过for循环,就还需要一个盛放素数的容器,可以保证几个一行几个一行的输出,这样是结果看上去更加清楚明了。

        之后我有发现一个问题,从2到(i-1)貌似重复计算循环一些数,经过查数我发现只要到根号i就好了,这样计算机也不重复做工了吐舌头!下面附上最后源程序,找出从100到200的素数(每5个一行,每个数占4位),敬请各位大神指教!

#include<stdio.h>#include"math.h"int main(){int i;int j;int count = 0;for (i=100; i<=200; i++){int temp = sqrt(i);    int flag = 1;for (j=2; j<=temp; j++){if (i % j == 0){flag = 0;break;}}if (flag){count++;    printf ("%4d\n",i);}    if (count % 5 == 0)            {                printf ("\n");}}     printf ("\n");     return 0;} 


0 0