洛谷_P3383 【模板】线性筛素数

题目描述

如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)

输入输出格式

输入格式:

第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。

接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。

 

输出格式:

输出包含M行,每行为Yes或No,即依次为每一个询问的结果。

 

代码

 1 var
 2   n,m,nm:longint;
 3   v,prime:array [0..10000001] of longint;
 4 procedure try1;
 5 var
 6   i,j:longint;
 7 begin
 8   nm:=0;
 9   v[1]:=1;
10   for i:=2 to 10000000 do
11     begin
12       if v[i]=0 then
13         begin
14           inc(nm);
15           prime[nm]:=i;
16         end;
17       j:=1;
18       while (j<=nm) and (i*prime[j]<=10000000) do
19         begin
20           v[i*prime[j]]:=1;
21           if i mod prime[j]=0 then break;
22           inc(j);
23         end;
24     end;
25 end;
26 
27 procedure init;
28 var
29   i,x:longint;
30 begin
31   readln(n,m);
32   for i:=1 to m do
33     begin
34       readln(x);
35       if v[x]=0 then writeln('Yes')
36                 else writeln('No');
37     end;
38 end;
39 
40 begin
41   try1;
42   init;
43 end.

猜你喜欢

转载自www.cnblogs.com/zyx-crying/p/9478423.html
今日推荐