zoukankan      html  css  js  c++  java
  • 杭电2012 质数问题

    哇~ 好心烦啊,我把质数的概念搞错了。

    质数(prime number)又称素数,有无限个。
    质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
    所以1不是素数,小于0也不是素数 下面是正确的检查素数代码:

    int chenck_prime(int num)//素数返回1
    {
        if(num<=0){
            return 0;//小于0 不是素数
        }
        else if(num==1){
            return 0;// 1 也不是
        }
        else if(num==2){
            return 1;
        }
        else{
            for(int i=2;i<num;i++){
                if(num%i==0){
                    return 0;//要是还有其它能被他整除的数,那也不是素数
                }
            }
            return 1;
        }
    }

    然后这道题的答案不就和吃豆腐一样的吗?

    #include <iostream>
    #include<math.h>
    #include <iomanip>
    #include<cstdio>
    #include<string>
    #include<map>
    #include<vector>
    #include<algorithm>
    #include<stdlib.h>
    using namespace std;
    /*
    抱歉 我今天A一题关于素数题目的时候发现昨天和你说的方法是错的,今天baidu了下,才知道概念错了
    质数(prime number)又称素数,有无限个。
    质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
    所以1不是素数,小于0也不是素数 下面是正确的检查素数代码
    */
    int chenck_prime(int num)//素数返回1
    {
        if(num<=0){
            return 0;//小于0 不是素数
        }
        else if(num==1){
            return 0;// 1 也不是
        }
        else if(num==2){
            return 1;
        }
        else{
            for(int i=2;i<num;i++){
                if(num%i==0){
                    return 0;//要是还有其它能被他整除的数,那也不是素数
                }
            }
            return 1;
        }
    }
    
    int main()
    {
       int m,n;
       while(cin>>m>>n){
        if(m==0&&n==0){
            break;
        }
        int sum=0;
        for(int i=m;i<=n;i++){
            if(chenck_prime(i*i+i+41)==1)
            {
                sum++;
            }
        }
        if(sum==n-m+1){
            cout<<"OK"<<endl;
        }else
        {
            cout<<"Sorry"<<endl;
        }
    
       }
        return 0;
    }

     新增修改:

    在做一题跟时间效率有关的题目时,发现了寻找质数还有这么一个算法:

    int chenck_prime(int num)//素数返回1
    {
        if(num<=0){
            return 0;//小于0 不是素数
        }
        for(int i=2;i<=sqrt(num);i++)
        {
            if(num%i==0)
            {
                return 0;
            }
    
        }
        return 1;
    }
  • 相关阅读:
    Java开发常用知识点总结
    Net实现阿里云开放云存储服务(OSS)
    KEIL MDK-ARM Version 5.26正式版开发工具下载
    【NXP开发板应用—智能插排】4. PWM驱动
    【NXP开发板应用—智能插排】3.驱动GPIO点亮外接LED
    【NXP开发板应用—智能插排】2.初步解析example之GPI
    【NXP开发板应用—智能插排】1.如何使用scp传输文件
    Keil MDK最新版 5.25介绍及下载地址
    springmvc框架helloword
    单例设计模式
  • 原文地址:https://www.cnblogs.com/William-xh/p/6822257.html
Copyright © 2011-2022 走看看