设为首页 加入收藏

TOP

素数间隔 UVa1644
2015-07-20 17:15:18 来源: 作者: 【 】 浏览:2
Tags:素数 间隔 UVa1644

1.题目描述:点击打开链接

2.解题思路:根据题意可知最大的素数在int范围内,可以先算出1299709以内的所有素数,随后二分查找n附近的素数的位置即可。

3.代码:

?

#define _CRT_SECURE_NO_WARNINGS 
#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
        
          #include
          #include
          
            #include
           
             #include
            
              #include
             
               #include
              
                #include
               
                 #include
                
                  #include
                 
                   using namespace std; #define N 1300000 int vis[N]; vector
                  
                   primes; void init() { int m = sqrt(N + 0.5); for (int i = 2; i <= m;i++) if (!vis[i]) for (int j = i*i; j < N; j += i) vis[j] = 1; for (int i = 2; i <= N;i++) if (!vis[i]) primes.push_back(i); } int main() { //freopen("test.txt", "r", stdin); int n; init(); while (scanf("%d", &n) != EOF&&n) { if (!vis[n])cout << 0 << endl; else { int L = 0, R = 100000; while (L < R) { int m = L + (R - L) / 2; if (primes[m] > n)R = m; else L = m + 1; } cout << primes[L] - primes[L - 1] << endl; } } return 0; }
                  
                 
                
               
              
             
            
           
          
        
       
      
     
    
   
  

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++拾遗--多线程:多线程的引入 下一篇STM32F429之LTDC驱动图解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)