素数判断 - C语言实现
2017-10-10 19:03
736 查看
除了1和自身之外不能整除其它数, 称之为素数. 最小的素数是2. 没有最大的素数.
1000以内素数, 如下图所示:
关于素数的算法, 一般有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 <stdio.h> #include <math.h> 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, 否返回0 int 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, 否返回0 int isPrime2 (int n) { int i = 2; int flag = 1; while (i * i <= n) { if (n % i == 0) { flag = 0; break; } i++; } return flag; }
相关文章推荐
- 【面试题】C语言:实现一个函数,判断一个数是不是素数。
- 【面试题】C语言:实现一个函数,判断一个数是不是素数。
- 判断素数问题(C语言实现)
- C语言实现判断素数,回文数,水仙花数,闰年
- C语言 实现一个函数,判断一个数是不是素数
- c语言:实现一个函数,判断一个数是不是素数。
- c语言:实现一个函数,判断一个数是不是素数。
- 判断素数问题(C语言实现)
- C语言 实现一个函数,判断一个数是不是素数
- c语言实现判断一个数是否是素数
- C语言实现2~n之间的素数判断的三种方法
- 输入一个数,判断是否为素数(C语言)
- 实现一个函数,判断一个数是不是素数
- PAT Basic 1013. 数素数 (20)(C语言实现)
- PAT Basic 1061. 判断题(15)(C语言实现)
- 实现一个函数,判断一个数是不是素数。
- 并行计算----5种方式实现判断是不是素数.Net,Win32,JavaRunnable,OpenMp,JavaThread
- c语言实现:求100~200之间的素数
- 素数判断的几种方法代码实现及其复杂度分析
- 多种方法实现素数的判断