除了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语言实现的更多相关文章

  1. JAVA语言的素数判断,随机数,函数调用

    近来刚学JAVA,就从JAVA写起吧,JAVA判别素数,其实方法和C/C++没什么区别,主要就是想谈一下,其中包括的3个点. (1)JAVA语言产生随机数,random函数,定义参数max的作用是给出 ...

  2. C语言 · 素数判断

     算法提高 素数判断   时间限制:1.0s   内存限制:512.0MB      编写一函数IsPrime,判断某个大于2的正整数是否为素数. 样例输入: 5样例输出:yes 样例输入: 9样例输 ...

  3. POJ 1811 大素数判断

    数据范围很大,用米勒罗宾测试和Pollard_Rho法可以分解大数. 模板在代码中 O.O #include <iostream> #include <cstdio> #inc ...

  4. POJ3641 Pseudoprime numbers(快速幂+素数判断)

    POJ3641 Pseudoprime numbers p是Pseudoprime numbers的条件: p是合数,(p^a)%p=a;所以首先要进行素数判断,再快速幂. 此题是大白P122 Car ...

  5. 有关素数判断的一些算法(总结&&对比)

    素性测试是数论题中比较常用的一个技巧.它可以很基础,也可以很高级(哲学).这次主要要介绍一下有关素数判断的奇技淫巧 素数的判断主要分为两种:范围筛选型&&单个判断型 我们先从范围筛选型 ...

  6. js判断浏览器语言实现网站国际化

    一般国际化的网站至少是有中.英文两种语言的,然后就是在不同的语言环境下使用不同的语言页面. 1.实现原理 一般实现这种功能的方法,无非就是两种, 第一种,判断浏览器语言类型: 第二种,判断ip所属国家 ...

  7. #C++初学记录(素数判断2)

    素数判断2 比较简单的算法,没有技术含量 A prime number is a natural number which has exactly two distinct natural numbe ...

  8. #C++初学记录(素数判断)

    练习题目二 素数判断 A prime number is a natural number which has exactly two distinct natural number divisors ...

  9. prime,素数的判断——c语言

    输入一个数a,求他是否是素数(用函数) 程序: #include<stdio.h> int prime(int a)-----------------------------------/ ...

随机推荐

  1. Linux - 用户管理常用命令

    1.查看Linux已经存在的用户: [root@CMCC_91 ~]# cut -d : -f 1 /etc/passwd [root@CMCC_91 ~]# cat /etc/passwd |awk ...

  2. URL 重写

    转载自:http://www.cnblogs.com/knowledgesea/archive/2012/10/08/2715350.html 一. 为了页面更有利于seo优化,url重写程序需要做出 ...

  3. 一个美国人对"智能制造"的思考!

    世界上制造业最强的国家仍然是美国!如今,国内工业4.0概念讨论日益喧嚣,中德合作如火如荼,但我们不能否认这个事实. “ 当下,美国似乎失去了世界第一制造大国的称号,而中国的企业也正面临产值下滑.利润下 ...

  4. Spring Framework 官方文档学习(三)之Resource

    起因 标准JDK中使用 java.net.URL 来处理资源,但有很多不足,例如不能限定classpath,不能限定 ServletContext 路径. 所以,Spring提供了 Resource ...

  5. Autofac IoC容器基本使用步骤【1】

    原文:http://www.bkjia.com/Asp_Netjc/888119.html  [原文中有一个地方报错,下面已修改] 一.基本步骤: 1.设计适合控制反转(IoC)的应用程序 2.给应用 ...

  6. Unity3D 物体移动方式总结(转)

    1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在 ...

  7. ios应用, 设置不自己主动备份到iCloud

    原创文章,转载请注明出处 ios项目,假设有内置下载或者程序动态生成文件的话,就要注意所下载或生成的文件,要不要自己主动备份到iCloud 假设没有合适的理由就自己主动上传大文件的话,可能在不能通过应 ...

  8. swift - UIView 设置背景色和背景图片

    代码如下: let page = UIView() page.frame = self.view.bounds //直接设置颜色 page.backgroundColor = UIColor.gree ...

  9. kafka 相关配置

    kafka主要配置包括三类:broker configuration,producer  configuration and consumer configuration. Broker Config ...

  10. CodeForces 651 A Joysticks

    A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...