1 判断一个数是否为素数

对于判断一个数m是否为素数,最朴素的方式是按照素数的定义,试除以从2开始到m-1的整数,倘若无一例外地不能整除,则该数必为素数。

 #include<iostream>
using namespace std;
int main()
{
cout << "Please input a number:\n";
int m;
cin >> m;
for (int i = ; i < m;++i)//i从2到m-1
  if (m%i == )
  {
  cout << m << " is not a prime.\n";
  return ;
  }
cout << m << " is a prime.\n";
cin.get();
return ; }

下面来深究一下:

在数学上,假定某个整数m不是素数,则一定可以表示成两个因子的积:

所以必定有一个因子不大于m的平方根(即这里所说的 i)。故判断m是否为素数,只要试除到m的平方根就可以了,不必一直到m-1(这段话请务必理解)。因此,上面的程序可以修改为:

 #include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout << "Please input a number:\n";
int m;
cin >> m;
double sqrtm = sqrt(m*1.0);// 注意:这里的m*1.0是为了将int类型的m转化为适合开根号的浮点型数据。
for (int i = ; i < sqrtm; ++i)
if (m%i == )
{
cout << m << " is not a prime.\n";
return ;
}
cout << m << " is a prime.\n";
cin.get();
return ;
}

这里取了一个浮点型(double)变量sqrtm,其值为m的平方根,该值是调用了一个C++的库函数sqrt而得,它在cmath中说明。由于i是整数,所以不等式i<=sqrtm中,i只能取小于或等于sqrtm的最大整数。

修改后的程序,效率提高了一些。例如判断101是否为素数,本来要从2试除到100,现在只要从2试除到10就行了。

C++ code:prime decision的更多相关文章

  1. Project Euler 77:Prime summations

    原题: Prime summations It is possible to write ten as the sum of primes in exactly five different ways ...

  2. VS Code:让你工作效率翻倍的23个插件和23个编辑技巧

    VS Code:让你工作效率翻倍的23个插件和23个编辑技巧 总结了一些平时常用且好用的 VS Code 的插件和编辑技巧分享出来. 文章详情可查阅我的博客:lishaoy.net ,欢迎大家访问. ...

  3. Windows could not set the offline local information.Error code:0X80000001解决方法

    我的笔记本是联想Y460(白色) 昨天在重装系统的时候遇到如下错误:Windows could not set the offline local information.Error code:0X8 ...

  4. Code:Blocks 中文乱码问题原因分析和解决方法

    下面说说修改的地方. 1.修改源文件保存编码在:settings->Editor->gernal settings 看到右边的Encoding group Box了吗?如下图所示: Use ...

  5. 【九度OJ】题目1040:Prime Number 解题报告

    [九度OJ]题目1040:Prime Number 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1040 题目描述: Ou ...

  6. 每日一九度之 题目1040:Prime Number

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6732 解决:2738 题目描述: Output the k-th prime number. 输入: k≤10000 输出: The k- ...

  7. 欧拉工程第51题:Prime digit replacements

    题目链接 题目: 通过置换*3的第一位得到的9个数中,有六个是质数:13,23,43,53,73和83. 通过用同样的数字置换56**3的第三位和第四位,这个五位数是第一个能够得到七个质数的数字,得到 ...

  8. Project Euler 87 :Prime power triples 素数幂三元组

    Prime power triples The smallest number expressible as the sum of a prime square, prime cube, and pr ...

  9. JD 题目1040:Prime Number (筛法求素数)

    OJ题目:click here~~ 题目分析:输出第k个素数 贴这么简单的题目,目的不清纯 用筛法求素数的基本思想是:把从1開始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下 ...

随机推荐

  1. php 配置文件不加载的一次配置

    最近在一台服务器上安装配置了5.6和7.1两个版本的php,之前是5.6的.使用都正常,7.1是后期安装的. 问题: 在7.1的程序目录中命名的配置文件为:php7-9026.ini,同时安装并在配置 ...

  2. mysql表备份的一种方式

    前提: 最近测试环境shop表经常出现表损坏不能正常查询,通过mysql的修复方法,暂时有效.故做该表的迁移操作. 思路是: 停止数据库的操作 1.备份老表.  2.创建一个结构一样的表. 3.将老表 ...

  3. 函数和常用模块【day06】:datetime模块(二)

    本节内容 1.datetime.datetime.now 2.datetime.date.fromtimestamp 3.datetime.timedelta 4.时间替换 1.datetime.da ...

  4. .NET MVC中的ActionResult

    一  摘要 本文介绍了ASP.NET MVC中的ActionResult,本节主要介绍 EmptyResult / Content Result /JavaScriptResult /JsonResu ...

  5. POJ - 3122 Pie(二分)

    http://poj.org/problem?id=3122 题意 主人过生日,m个人来庆生,有n块派,m+1个人(还有主人自己)分,问每个人分到的最大体积的派是多大,PS每 个人所分的派必须是在同一 ...

  6. centos 修改文件权限

    给脚本添加可执行权限: chmod -R 777 filename.sh

  7. JavaScript之创建动态脚本

    //option= {type,src,text,isCreateScriptBySrc} function createDynamicScript(option){ var script = doc ...

  8. 阿里云3台机器组成集群配置ssh免密码登陆

    1 查询阿里云局网ip 注意:需要配置同一地区同一可用区的机器 才是一个局网 2 配置好hosts文件 3 hostname确认也是正确的 4 生成公钥私钥 三台机器同样操作 ssh-keygen - ...

  9. 如何调整cell的大小

    一般情况下,我们使用tableview的时候从来没有设置过cell的大小(w,h).位置(x,y)等,而是系统直接给我们自动生成,但是有的时候我们可能会改动cell的大小及位置,比如:在适配ios6跟 ...

  10. Spring使用注解和struts集成