判断素数的相关代码

素数是什么大家应该都知道,一个数是不是素数也很简单。

一下是代码,分别由两个函数。一个函数实现判断一个数是不是素数,另外一个函数实现输出小于等于一个特定数字的所有素数。

#include "stdafx.h"
#include <iostream>
using namespace std;
//Display_sushu(int m)函数输出小于等于m的所有素数
void Display_sushu(int m)
{
    int n=0;
    int i;
    for(int j=1;j<=m;j++)
    {
        if (j==3||j==2||j==1)    //这里是j不是m,下面也是一样的
        {
            cout<<j<<"是素数"<<endl;
            continue;
        }
        n=j/2;
        for (i=2;i<=n;i++)
        {
            if (j%i==0)
            {
                //cout<<m<<"不是素数"<<endl;
                break;
            }
        }
        if (i>n)
            cout<<j<<"是素数"<<endl;
    }
}

//Is_sushu(int m)函数判断m是不是素数
void Is_sushu(int m)
{
    int n=m/2;
    if (m==1||m==2)
    {
        cout<<m<<"是素数"<<endl;
        return;
    }
    for (int i=2;i<=n;i++)
    {
        if (m%i==0)
        {
            cout<<m<<"不是素数"<<endl;
            return;
        }
    }
    cout<<m<<"是素数"<<endl;
}

int main()
{
    int m;
    cin>>m;
    Is_sushu(m);
    cin>>m;
    Display_sushu(m);
    return 0;
}

截图:

PS:n=m/2即循环次数的控制,其实还可以写成n=sqrt(m),但是要求数据类型有要求。且需要头文件cmath。

网摘:VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long)

注意没有sqrt (int),但是返回值可以为int。

这样子循环次数更少,效率更高。

可以这样改的原因就是,一个数m如果可以分解成两个数(因子)的乘积(除开1和它本身),那么至少有一个因子小于等于sqrt(m),另外一个因子大于等于sqrt(m),最特别的两个因子都等于sqrt(m),即sqrt(m)*sqrt(m)。

时间: 2024-11-03 21:16:49

判断素数的相关代码的相关文章

代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

package com.heima.Coding; /* 判断101-200之间有多少个素数(质数),并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数.*/ public class Test { public static void main(String[] args) { int count = 0; for (int i = 100; i < 200; i++) { for (int j = 2; j <=

HDU 2138 How many prime numbers(Miller_Rabin法判断素数 【*模板】 用到了快速幂算法 )

How many prime numbers Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12955    Accepted Submission(s): 4490 Problem Description Give you a lot of positive integers, just to find out how many pr

快速判断素数

以前我在判断素数上一直只会 sqrt(n) 复杂度的方法和所谓的试除法(用sqrt(n)以内的素数来除). 现在我发现其实还有一种方法叫做费马小定理. 有关请见 http://baike.baidu.com/link?url=1BurQrmJP3j9QiD4OnA2X3TAbSSCPvTgbaqbo6qSQPVSuXLjVe-lL2SNi6N5wblwJFrIJs41pmDbCZ6z9je4h_: 代码如下: llg ch(llg a,llg b){ llg now=a,ans; while(b

jquery实现的判断倒计时是否结束代码

jquery实现的判断倒计时是否结束代码:本章节介绍一段代码实例,此代码能够判断当前日期是否已经倒计时结束,此代码中并没有倒计时效果,只是判断是否倒计时完成,比如购物网站优惠期限等,虽然实际应用中,很少会出现类似的代码,不过希望能够给浏览者带来一定的启示作用.代码如下: function done(){ var str=$('#end').text(); var out=str.match(/\d+/g); console.log(out); var h=parseInt(out[0]),m=p

判断素数和输出100以内的素数

判断素数 public class Au { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); int isprime = 1; for(int i=2; i<n; i++){ if(n%i == 0){ isprime = 0; break; } } if(isprime ==

Java杂谈三之判断素数以及穷举素数

首先确认下什么是素数,又称质数 百度的定义解答: 质数(prime number)又称素数,有无限个.一个大于1的自然数,如果除了1和它本身 外,不能被其他自然数整除(除0以外)的数称之为素数(质数) 明确了素数的定义后,下面用java来判断素数以及穷举2-999以内的素数,还是一样,主 要看的是对一个数进行判断或者对一组数进行判断的思想,至于怎样判断的,百度的定义已经给了很好的解答思路. JavaPrimeNubmer:类名 enumPrimeNumber():穷举2-999以内的所有素数 m

php判断浏览器的相关文章,教程,源码

学步园推荐专题: 关于php判断浏览器的相关文章 文章标题 文章链接 文章简介 使用php判断浏览器的类型和语言的函数代码 http://www.xuebuyuan.com/33945.html 我们经常看到有一些网站上面会显示出你目前使用的浏览器类型和使用的语言,比如显示的是:您使用的浏览器为 IE6,繁体字.看起来是不是很炫. 其实这样的功.. 全文: 使用php判断浏览器的类型和语言的函数代码 php判断浏览器和语言 http://www.xuebuyuan.com/149621.html

Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码

前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function(){ //获取当前输入 的值 var value=$(this).val(); //偷偷摸摸发起请求 var url="${pageContext.request.contextPath }/like" var params="name="+value; //先清空下方

OCAC暑期比赛第一场 L题 判断素数 题解

判断素数[题目描述]素数,是指除了一和它本身外,不能被别的书整除的数.给你一个整数数 a (0 <= a <= 10^18) ,请你判断它是不是素数.[输入格式]输入一个整数 a (0 <= a <= 10^18).[输出格式]如果 a 是素数,输出 "YES":否则,输出 "NO" .[样例输入1]8[样例输出1]NO[样例输入2]13[样例输出2]YES[题目分析]对于一个数 a, 从 2 到 sqrt(a) 找找有没有能够整除 a 的数