【PAT乙级真题及训练集】【1007】. 素数对猜想 (20)

  题是不难的,但是素数打表值得学习,虽然我早就会了。。。

  然后注意不超过不是小于。

  

#include "stdio.h"
#include "math.h"
int prime[1000005];  
void init_prime()  
{  
    int i, j;  
    for(i = 2;i <= sqrt(1000002.0); ++i)  
    {  
        if(!prime[i])  
            for(j = i * i; j < 1000002; j += i)  
                prime[j] = 1;  
    }  
    j = 0;  
    for(i = 2;i <= 1000002; ++i)  
        if(!prime[i])   
            prime[j++] = i;  
}  
int main(int argc, char const *argv[])
{
    int num;
    scanf("%d",&num);
    int ans=0;
    init_prime();
    for (int i = 0; prime[i+1]<=num; ++i)
    {
       //printf("%d %d\n",prime[i+1],prime[i]);
        if(prime[i+1]-prime[i]==2)
        {
            ans++;
        }
    }
    printf("%d\n",ans);
    return 0;
}

你可能感兴趣的:(【PAT乙级真题及训练集】【1007】. 素数对猜想 (20))