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

质数(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;
}