zoukankan      html  css  js  c++  java
  • POJ 3518 Prime Gap(素数题)

    【题意简述】:输入一个数,假设这个数是素数就输出0,假设不是素数就输出离它近期的两个素数的差值,叫做Prime Gap。

    【分析】:这题过得非常险。由于我是打的素数表。

    由于最大的素数是1299709,所以注意在打表时要使用long long。否则程序应该不能执行。注意这一点应该就能够了。

    积累!

    // 2984K 235Ms 
    #include<iostream>
    using namespace std;
    #define N 2000001
    
    bool isprime[N];  
    long long prime[100001],nprime;  // 注意long long
      
    void doprime()  
    {  
        long long i,j;  // !!注意
        nprime = 1;  
        memset(isprime,true,sizeof(isprime));  
        isprime[1] = 0;  
        for(i = 2;i<=1299709;i++)  
        {  
            if(isprime[i])  
            {  
                prime[nprime++] = i;  
                for(j = i*i;j<=1299709;j+=i)  
                {  
                    isprime[j] = false; 
                }  
            }  
        }  
    }
    
    int main()
    {
    	long long n;//注意。
    	doprime();
    	while(1)
    	{
    		cin>>n;
    		if(n == 0)
    			break;
    		
    		for(long long i = 0;i<nprime;i++)
    		{
    			if(n == prime[i]){
    				cout<<0<<endl;
    				break;
    			}
    		
    			if(n>prime[i]&&n<prime[i+1]){
    				cout<<prime[i+1]-prime[i]<<endl;
    				break;
    			}
    		}
    	}
    	return 0;
    } 


  • 相关阅读:
    line-block,white-space,overflow
    JS操作cookie
    C#的位运算
    小常识:变量的修饰符和DEMO
    JS等号的小注释
    关于谷歌浏览器的小常识
    P2568 GCD
    P2522 [HAOI2011]Problem b
    P3455 [POI2007]ZAP-Queries
    P1447 [NOI2010]能量采集
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5197759.html
Copyright © 2011-2022 走看看