鱼C论坛

 找回密码
 立即注册
查看: 1792|回复: 0

[技术交流] 用筛法求之N内的素数。

[复制链接]
发表于 2021-1-1 13:43:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述
用筛法求之N内的素数。
输入
N
输出
0~N的素数
样例输入
100
样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
--------------
1.
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int N  , a , b[50000] , c  , i       ;
  5.         scanf("%d" , & N)                    ;
  6.         for(i = 2 ; i < N + 1 ; i ++) {
  7.                 a = 2                        ; // 很有必要,对于每一个 i 都必须初始化
  8.                 c = 0                        ; // 很有必要,对于每一个 i 都必须初始化
  9.                 while(a * a < i + 1)           // 不必循环到 a = i,根据乘法交换律,只需要循环一半次数即可
  10.                 {
  11.                         b[c] = i % a         ;
  12.                         a ++                 ;
  13.                         c ++                 ;
  14.                 }
  15.                 for(a = 0 ; a < c ; a ++)      // 一共产生了 c 个余数
  16.                 {
  17.                         if(b[a] == 0) break  ; // 如果有余数为 0 值,说明 i 不是素数,中断循环
  18.                 }
  19.                 if(a == c) printf(" %d" , i) ; // 如果循环是正常结束的,说明没有找到 0 值余数,那 i 就是素数无疑
  20.         }
  21. }
复制代码

2.
  1. #include <stdio.h>
  2. int Is(int num)
  3. {
  4.                 int i;
  5.                 for(i = 2; i < num; i++)
  6.                 {
  7.                         if(num % i == 0)
  8.                         {
  9.                                 return 0;
  10.                         }
  11.                 }
  12.                 return 1;
  13. }

  14. main()
  15. {
  16.         int N, i, n = 0;
  17.         scanf("%d",&N);
  18.         int b[N]; // 最好在给N赋值后
  19.         for(i=2;i<=N;i++)
  20.         {
  21.                 if(Is(i))
  22.                 {
  23.                         b[n++] = i;
  24.                 }
  25.         }
  26.        
  27.         for(i = 0; i < n; i++)
  28.         {
  29.                 printf("%d ", b[i]);
  30.         }
  31.        
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-3 17:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表