筛选法求素数&一般方法求素数&判断一个数是否是素数


1.判断一个数是否是素数

#include<stdio.h>
#include<math.h>
int main()
{int n, i, k;printf("please enter a integer number");scanf_s("%d", &n);k = sqrt(n);for (i = 2; i < k; i++)if (n % i == 0)break;if (i <= k)printf("%d is not a prime number.\n", n);else printf("%d is a prime number.\n", n);return 0;
}
  • 运行结果


2.筛选法求素数(以求200以内素数为例)

1.解释下什么是筛选法?

筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。

2.程序步骤:

<1> 先将1挖掉(因为1不是素数)。

<2> 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。

<3> 用3去除它后面的各数,把3的倍数挖掉。

<4> 分别用5…各数作为除数去除这些数以后的各数。

3.具体应用(求100以内的素数):

        基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列,把不是素数的数全部赋值为0,最后只输出不是零的数即素数。1不是素数,首先把它换为0。剩下的数中选择最小的数是素数,然后把它的倍数全部换为0。依次类推,直到结束。

如有:

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
1不是素数,换为0。剩下的数中2最小,是素数,然后把它的倍数全部换为0,余下的数是:
0 2 3 0 5 0 7 0 9 0
11 0 13 0 15 0 17 0 19 0
21 0 23 0 25 0 27 0 29 0
剩下的数中3最小,是素数,然后把它的倍数全部换为0,如此下去直到所有的数都被筛完,求出的素数为:

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      (载至路漫漫其修远兮sjw)

#include <stdio.h>
#include <math.h>
#define N 200
int main()
{int i, j, n, a[N+1];for (i = 1; i < N; i++){a[i] = i;}a[0] = 0;for (i = 2; i <= sqrt(N); i++)//筛选{for (j = i + 1; j <=N; j++){if (a[i] != 0 && a[j] != 0)if (a[j] % a[i] == 0){a[j] = 0;}}}printf("\n");for (i = 2, n = 0; i < N; i++){if (a[i] != 0){printf("%5d", a[i]);n++;}if (n == 10)//控制换行{printf("\n");n = 0;}}return 0;
}
  • 运行结果


3.一般法求素数 (200以内)

sqrt是求平方根的函数,其对参数的要求是双精度,在执行时会自动将 i 转换为双精度数,求出的函数值也是双精度,再把它赋值给k,系统会自动舍弃小数部分,将整数部分赋给k。

#include <stdio.h>
#include <math.h>
#define N 200
int main()
{int i, j, k, n = 0;for (i = 101; i <= N; i = i + 2){k = sqrt(i);for (j = 2; j <= k; j++){if (i % j == 0)break;}if (j >= k + 1){printf("%5d", i);n++;}if (n % 10 == 0)//控制换行{printf("\n");}}return 0;
}
  • 运行结果

作者也不知道为什么会有这么多空行,有知道的大佬可以留言。

筛选法求素数一般方法求素数判断一个数是否是素数相关推荐

  1. c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...

    判断一个数是否为素数 算法思想 设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqr ...

  2. c语言一个数等于素数的乘积,C语言实现判断一个数是否为素数并求100以内的所有素数...

    判断一个数是否为素数 算法思想 设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqr ...

  3. 求1~100以内的素数(判断一个数是否为素数)

    [定义] 即只能被1或者自身整除的自然数(不包括1),称为素数/质数. 1.求1~100以内的所有素数 #include<iostream> using namespace std; in ...

  4. java语言 判断素数,C语言实现判断一个数是否为素数并求100以内的所有素数

    判断一个数是否为素数 算法思想 设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqr ...

  5. 【C++,C语言,Java】判断一个数是否为素数,并求出100-200间的所有素数

    要求:设计一个程序,求出100-200间的所有素数,要求每行输出五个素数.判断一个数是否为素数用一个函数来实现. C++实现: #include<iostream> using names ...

  6. python脚本判断一个数是否为素数的几种方法

    质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...

  7. python中判断一个数是否为素数_【转载】Python脚本判断一个数是否为素数的几种方法...

    质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...

  8. php如何读冻,天寒地冻玻璃碴跪求php解密方法求大神呢

    天寒地冻玻璃碴跪求php解密方法求大神呢冰天雪地玻璃碴跪求 php解密方法 求大神呢 php,加密,php,解密 分享到: ------解决方案-------------------- 一般来说都是将 ...

  9. javaScript用函数的方法判断素数:判断一个数是否是素数(代码)

    题目 题目:判断一个数是否是素数 代码如下: function su(n){ for(var i = 2;i<n;i++){ if(n%i == 0){ // 代码走到这里面证明不是素数 ret ...

最新文章

  1. 在批处理中调用JS操作MongoDB
  2. 疯狂python讲义视频 百度云-疯狂的python讲义 PDF 下载
  3. upper_bound()与lower_bound函数的使用
  4. wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐
  5. TextBox获得焦点——客户端JavaScript
  6. 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...
  7. 30-- 返回倒数第 k 个节点
  8. 7.python实现高效端口扫描器之nmap模块
  9. JavaScript数据结构——栈(Stack)
  10. 总结几个 C 语言知识点
  11. 计算机基础知识点总结
  12. js - JSON构造函数
  13. Java中如何保证线程安全
  14. OMV搭建系列教程[5] – 安装Aria2
  15. 乐拼拼购系统开发(源码成品)
  16. 利好:加快发展统一的资本市场
  17. Vue3 使用vant actionBar组件后对icon图标的点击切换效果/点击收藏/取消收藏
  18. 从PHP 5到PHP 7性能全评测(含未发布的JIT版PHP 8对比)
  19. 华为云 IoT 物联网数据分析能力详解
  20. 如何在Word中添加漂亮的代码块 | 很全的方法整理和比较

热门文章

  1. 微信小程序地址,右侧边栏带字母滑动
  2. 我的青春是天书奇谈折扣端(4.7折)新追忆开始大刀已经饥渴难耐
  3. linux boot分区 恢复出厂设置,linux系统启动流程及 MBR损坏,grub内容,文件误删,boot目录,分区误删修复...
  4. vue如何解决axios请求前端跨域问题
  5. Mybatis中sql拼接in查询
  6. 深入Java虚拟机之类加载
  7. “华人首富”:李嘉诚一生的前前后后
  8. Autodesk 3ds max 2017 无法保存导出fbx的预设(FBX export does not save presets - Autodesk)
  9. ShellExecuteEx执行新进程,无需管理员权限写入注册表
  10. Yarn基本介绍(一)