判断素数

1.简单暴力的方法

    判断[2,n-1]区间有没有约数即可

    

  1. int isPrime(int n) {  
  2.     int i;  
  3.     for (i = 2; i < n; ++i) {  
  4.         if (n % i == 0) return 0;  
  5.     }  
  6.     return 1;  

2.用sqrt(n)

    约数都在sqrt(n)这个数的两边对应出现,所以若sqrt(n)的右边没有,则左边也没有

  1. int isPrime(long long n) {  
  2.     long long i;  
  3.     for (i = 2; i * i <= n; ++i) {  
  4.         if (n % i == 0) return 0;  
  5.     }  
  6.     return 1;  
  7. }  



eg:杭电判断素数1012

 #include <iostream>
#include <string.h>
#include <algorithm>
#include <cstdio>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
    int x,y,i,j;
    while(scanf("%d%d",&x,&y)!=EOF)
    {
        if(x==0&&y==0)
            break;
        int flag=0;

        for(i=x; i<=y; i++)
        {
            int z=i*i+i+41;
            for(j=2; j<sqrt(z); j++)    //要用sqrt(n),不然会超时
            {
                flag=1;
                   break;
            }
        }
        if(flag==1)
            printf("OK\n");
        else
            printf("Sorry\n");
    }
    return 0;
}

阅读更多
个人分类: 习题
想对作者说点什么? 我来说一句

判断素数(用C#编写)

2009年11月01日 736B 下载

没有更多推荐了,返回首页

不良信息举报

判断素数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭