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;
    } 


  • 相关阅读:
    租房子查询练习
    投票练习题
    多条件查询
    查询
    练习---新闻界面
    mysql增删改处理
    挖宝游戏
    mysql数据访问
    练习···表格
    类的使用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5197759.html
Copyright © 2011-2022 走看看