zoukankan      html  css  js  c++  java
  • nyoj24素数距离问题

    素数距离问题

    时间限制:3000 ms  |  内存限制:65535 KB

    难度:2

    描述

    现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
    如果输入的整数本身就是素数,则输出该素数本身,距离输出0

    输入

    第一行给出测试数据组数N(0<N<=10000)
    接下来的N行每行有一个整数M(0<M<1000000),

    输出

    每行输出两个整数 A B.
    其中A表示离相应测试数据最近的素数,B表示其间的距离。

    样例输入

    3

    6

    8

    10

    样例输出

    5 1

    7 1

    11 1

    #include<stdio.h>  
    #include<string.h>  
    #include<math.h>  
    #define MAX 1000010  
    int prime[MAX];  
    //素数表  
    void Prime(){  
        memset(prime,0,sizeof(prime));  
        for(int i = 2;i < sqrt(MAX)+1;i++){  
            if(prime[i])
           {  
                continue;  
            }  
            else{  
                for(int j = i*i;j < MAX;j += i){  
                    prime[j] = 1;  
                }  
            }  
        }  
    }  
    int main()  
    {  
        int N,M,LIndex,RIndex;    
        Prime();  
        prime[1] = 1;  
        prime[0] = 1;  
        scanf("%d",&N);  
        //N组测试数据  
        while(N--){  
            scanf("%d",&M);  
            if(prime[M] == 0){  
                printf("%d 0
    ",M);  
            }  
            else{  
                RIndex = M;  
                LIndex = M;  
                //寻找左边素数  
                while(prime[LIndex] == 1 && LIndex >= 0){  
                    LIndex --;  
                }  
                //寻找右边素数  
                while(prime[RIndex] == 1){  
                    RIndex ++;  
                }  
                //左边没有找到  
                if(LIndex < 0){  
                    printf("%d %d
    ",RIndex,RIndex-M);  
                }  
                //左右都有  
                else if(M - LIndex <= RIndex - M){  
                    printf("%d %d
    ",LIndex,M-LIndex);  
                }  
                else{  
      printf("%d %d
    ",RIndex,RIndex-M);  
                }  
            }  
        }  
        return 0;  
    } 
    

      

  • 相关阅读:
    数据挖掘实践(23):实战-- 建筑能源得分预测报告(一)
    返回闭包
    函数指针
    Rust 中的 Closure
    Moves, copies and clones in Rust
    Rust的闭包类型(Fn, FnMut, FnOne的区别)
    Clone VS Copy
    rust socket
    A simple UNIX socket listener in Rust
    【firecracker】系统启动与epoll事件循环
  • 原文地址:https://www.cnblogs.com/zhangliu/p/7052721.html
Copyright © 2011-2022 走看看