ACM——素数判定

知识点:

素数

(原理)所谓素数即只能被1和本身整除的数,那么毫无疑问,对于一个数n是不是素数,我们可以直接进行判断,即从2~n-1一一进行枚举,如果n都不能被整除,那么说明n就是素数。如果直接暴力判断,需要注意两点:

1、n不能太大

2、只需判断n的根号次

在此我们为了避免运行时间超出限制采用简便方法,将循环结束标记定为sqrt(n).

(例题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2012

题目分析:首先接收x,y范围,依次将范围内的算式结果遍历出来拿来判断。若是某一次判断为是素数则跳出该次循环输出Sorry,否则YES。

 题解代码:

#include

#include

#include

int main()

{

    int res=0,x=0,y=0,i=0,j=0;

   while(scanf("%d%d",&x,&y)){

        if(x==0&&y==0){

            return 0;

        }

        for(i=x;i<=y;i++){

            res=i*i+i+41;

            for(j=2;j<=sqrt(res);j++,j++){

                if(res%j==0){

                printf("Sorry\n");

                    break;

                }

            }

            if(j<=sqrt(res)){

                break;

            }

        }

        if(i>y){

            printf("OK\n");

        }

    }

    return 0;

}

你可能感兴趣的:(ACM——素数判定)