博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
素数判断 - C语言实现
阅读量:5236 次
发布时间:2019-06-14

本文共 1178 字,大约阅读时间需要 3 分钟。

除了1和自身之外不能整除其它数, 称之为素数. 最小的素数是2. 没有最大的素数.

1000以内素数, 如下图所示:
881297-20171010190253934-1371499288.jpg

关于素数的算法, 一般有2种.

第1种, 给出一个数n(n >= 2), 判断n是不是素数
第2种, 给出一个数n(n >= 2), 把[2, n]的所有素数拿出来

判断一个数n是否是素数, 最简单粗暴的方法就是把n分别与i(i的范围是[2, n-1])求余

稍微想一下我们就能知道, 只需判断n与[2, n/2]求余即可
再高级点利用数学上的证明, 可以得出, 只需判断n与[2, sqrt(n)]求余即可

C语言sqrt的原型是: double sqrt(double x)

下面的代码展示了2个利用sqrt(n)就素数的算法, 其中第2个算法通过一些简单的变换, 使

我们不必具体求出sqrt(n)的值, 就能判断n是不是素数

#include 
#include
int isPrime1 (int n);int isPrime2 (int n);int main () { int i; // 打印 [2, 1000]内的所有素数 for (i=2; i<=1000; i++) { if (isPrime2(i) == 1) { printf("%6d", i); } } return 0;}// 判断n是否是素数(利用库函数sqrt(n))// 返回值: 是返回1, 否返回0int isPrime1 (int n) { int i; int flag = 1; // 先假设n就是素数 int squareRoot = (int)(sqrt(n)); for (i=2; i<=squareRoot; i++) { if (n % i == 0) { flag = 0; break; } } return flag;}// 判断n是否是素数(不使用sqrt())// 返回值: 是返回1, 否返回0int isPrime2 (int n) { int i = 2; int flag = 1; while (i * i <= n) { if (n % i == 0) { flag = 0; break; } i++; } return flag;}

转载于:https://www.cnblogs.com/asheng2016/p/7647278.html

你可能感兴趣的文章
CSS--文本属性
查看>>
【二次元的CSS】—— 用 DIV + CSS3 画咸蛋超人(详解步骤)
查看>>
关于restful开发的疑惑
查看>>
笔记:html常见的兼容问题
查看>>
如何获取HTML中Select选中项的值
查看>>
什么是Reactor模式,或者叫反应器模式
查看>>
高效程序员的工作场所和装备
查看>>
【GO基础】main redeclared in this block问题的排查与解决
查看>>
给按钮添加 toSearch_Button.setOnClickListener(this);出错 解决办法
查看>>
python之线程、进程入门
查看>>
English trip M1 - PC7 Can I Borrow Your Ping-Pong? Teacher:Patrick
查看>>
Windbg+Procdump解决w3wp.exe CPU过百问题
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
async await 和 task的区别和理解(可能有错)
查看>>
使用自定义比较操作符排序,查找
查看>>
vector详解
查看>>
模拟一位顾客去银行取钱的情形
查看>>
hihocoder-1497-Queen Attack
查看>>
js 函数 理解
查看>>
hibernate增删改查
查看>>