zoukankan      html  css  js  c++  java
  • Java用筛子法求素数

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

     
    输入
    第一行给出测试数据组数N(0<N<=10000)
    接下来的N行每行有一个整数M(0<M<1000000),
    输出
    每行输出两个整数 A B.
    其中A表示离相应测试数据最近的素数,B表示其间的距离。
    样例输入
    3
    6
    8
    10
    样例输出
    5 1
    7 1
    11 1

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4     public static void main(String[] args) {
     5         int T;
     6         Scanner scanner=new Scanner(System.in);
     7         int number;
     8         int result;
     9         int distance;
    10         int temp;
    11         int N=1000010;
    12         int flag[]=new int[N];
    13         int i;
    14         int j;
    15         
    16         for(i=0;i<N;i++)
    17             flag[i]=0;
    18         
    19         flag[0]=1;
    20         flag[1]=1;
    21         
    22         for(i=2;i*i<N;i++){
    23             if(flag[i]==0){
    24                 for(j=i*i;j<N;j+=i)
    25                     flag[j]=1;
    26             }
    27         }
    28         
    29         T=scanner.nextInt();
    30         while(true){
    31             if(T==0)
    32                 break;
    33             T--;
    34             
    35             number=scanner.nextInt();
    36             
    37             if(number==1){
    38                 System.out.println("2 1");
    39                 continue;
    40             }
    41             
    42             temp=number;
    43             while(true){
    44                 if(flag[temp]==0){
    45                     result=temp;
    46                     distance=number-temp;
    47                     break;
    48                 }
    49                 temp--;
    50             }
    51             
    52             temp=number;
    53             while(true){
    54                 if(flag[temp]==0){
    55                     if(temp-number<distance){
    56                         result=temp;
    57                         distance=temp-number;
    58                     }
    59                     break;
    60                 }
    61                 temp++;
    62             }
    63             
    64             System.out.println(result+" "+distance);
    65         }
    66     }
    67 }
     
  • 相关阅读:
    ok~加油!
    解析window.open链接的参数
    Arrya数组添加过滤条件
    Oracle 查询今天、昨日、本周、本月和本季度的所有记录
    Sql Server日期查询-SQL查询今天、昨天、7天内、30天
    Lua 中 pairs 和 ipairs 的区别
    关于SignalR连接数量问题的记录
    IceStorm示例运行步骤
    从 OPC 到 OPC UA
    SQL Server 2008 R2 Express Profiler
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4129752.html
Copyright © 2011-2022 走看看