试除法
ONE:

 Code
Code
IsPrime(a){
    for(i=2;i*i<=a;i++)
         if(a%i==0)
             return a为合数;
     return a为素数;
}TWE:

 Code
Code
bool isPrime(int k) {
    for (int i = 2 ; i < k ; i++)
        if (k % i == 0) return false;
    return true; 
}
  
筛法  
如果要判断一个区间内的数是否为素数,也可用筛法求素数。  
算法思想: 
1)将所有候选数2~n放入筛中; 
2)找出筛中最小数P,P一定为素数。 
3)宣布P为素数,并将P的所有倍数从筛中筛去; 
4)重复2)至3)直到筛空. 
其实,当P>sqrt(n)时筛中剩下的数就已经都是素数了。
ONE:
 

 Code
Code
//用数组isprime[MAXN]记录1-9999之间的数是否为素数;
//isprime[i]为1表示i为素数,否则为合数
#include<iostream>
using namespace std;
const int MAXN=10000;
int isprime[MAXN];
int i,j;
void initprime()
{
    for (i=2; i <MAXN; i++)
        isprime[i] = 1;
    isprime[1] = 0;
    for(i=2;i*i<MAXN;i++)
    {
        if(isprime[i]==1)
        {
            for(j=i+i;j<MAXN;j+=i)
                isprime[j]=0;
        }
    }
} 
TWO:

 Code
Code
#include <stdio.h>
#include <math.h>
char num[10000000];
int main()
{
    memset(num,1,sizeof(num));
    int i,j,k,sq;
    int n=8000000;
    sq=sqrt(n)+1;//若x是k的因子,则k/x也是k的因子,故判断到sqrt(n)即可
    for(i=2; i<=sq ;i++)
       if( num[i] )
           for(j=2,k=n/i+1; j<k ;j++) num[i*j]=0;//0非素数,1是素数
    return 0;
}