c语言:找出N以内的所有素数

来源:互联网 发布:云计算安全事件 编辑:程序博客网 时间:2024/05/17 02:56
方法一:
   方法思想概论:
      我们已知2是最小素数,于是从2开始筛选(定义筛选的基数为n,此时n = 2)。那么所有的2的倍数都不是素数,
      因为至少可以被2整除。之后对3、4、5、6.....进行筛选(此时n = 3、4、5、6、7.....)。

  
#include <stdio.h>#include <stdio.h>#define N 10000     //这个可以随意定义,只要不溢出int main(){int prime[N] = { 0 }, //存储素数,并初始化为0flag[N] = { 0 },  //数字对应的素数标志。0 --素数  1 -- 非素数i, j, count;for (i = 2, count = 0; i < N; i++){if (!flag[i])              //刚进入i对应的循环时,如果素数标志为0,那代表i不能被所有比i小的正整数整除,所以是素数。prime[count++] = i;for (j = 2 * i; j<N; j += i){   //筛掉所有能被i整除的数。flag[j] = 1;}}for (i = 0; i<count; i++)printf("%d ", prime[i]);return 0;}


 
方法二:
   方法思想概论:

             一轮循环判断从2到N之间的所有数字,判断每个数字是不是都只能被1和自身整除。


 #include <stdio.h> #include <stdio.h>    #define N 10000     //这个可以随意定义,只要不溢出 int main(){   int sushu[N],i,j,count = 0,flag;  for (i = 2; i < N;i++){    flag = 0;                  //每轮循环要记得归位。    for (j = 2; j * j <= i;j++){             if (i % j == 0){        flag = 1;      }    }    if (flag == 0)      sushu[count++] = i;  }  return 0;}



   
原创粉丝点击