TZOJ 1374 素数判定

TZOJ 1374 素数判定_第1张图片答案:

#include   
#include     //布尔类型需要的库文件
int i = 0, n = 0;  
bool sushu(int num)   //定义一个是否是素数的函数
{
    if (num <= 1)     //如果这个值小于1(素数都是大于1的,最小的素数是2)
    {
        return false;   //布尔值为假
    }
    for (i = 2; i <= num/i; i++)   //判断是否为素数(优化算法)
    {
        if (num % i == 0)   //如果能被其他数整除
        {
            return false;   //该数不是素数,布尔值为假
        }
    }
    return true;   //该数是素数,布尔值为真
}

int main() 
{
    int x, y;   
    while (scanf("%d%d", &x, &y) == 2 && !(x == 0 && y == 0))   //多组数据输入,每两次输入为一组,且x和y不同时等于0
    {
        bool allsushu = true;   //假定所有的数都为真(即默认所有数都是素数)
        for (n = x; n <= y; n++)    //从x到y的数循环代入
        {
            int t = n * n + n + 41;  //t为表达式算出来的值
            if (!sushu(t))    //sushu(t)如果为假,则!sushu(t)为真,执行if语句,反之不执行
            {
                allsushu = false;   //说明该区间不是所有数都为素数,即假定不成立,为假
                break;   //跳出循环,没必要继续往下判断了
            }
        }
        if (allsushu)    //如果确实区间内全部的数都为素数,即为真
        {
            printf("OK\n");   //打印ok
        }
        else    //不全为素数,即为假
        {
            printf("Sorry\n");    //打印sorry
        }
    }
    return 0;
}

你可能感兴趣的:(c语言)