扫一扫,加我们为好友有惊喜哦~
-->

核心课程
开班动态
专题服务

您当前所在位置:首页 > 中心动态 >>
Java素数判断——常州Java培训

1求素数2N2N500)之间的素数。例如:

输入:N=100

输出:  2   3    5   7  11  13

       17  19   23  29  31  37

       41  43   47  53  59  61

       71  73   79  83  89  97

       total=24   {表示2100之间的素数有24}

[解法一]素数是指除1及本身以外不能被其他数整除的自然数。下面介绍用穷举法求素数。

1.2是素数;t=0

2.I=2n,则:

1)如果i是素数,则其必须是奇数且不能被2~√i  中的任一个数整除。

     2)如果I是素数,则输出该素数且计数器t=t+1

   3.输出2N之间素数的总数:total=t;

4.程序结束

 

[程序]

program exa;

uses crt;

var  i,k,n,w,t:integer;

     yes:boolean;

Begin t:=0;clrscr;write(‘N=’);readln(n);

  if (n<2)and(n>500) then

    begin writeln(‘input error!’);halt;end;

  write(2:5);t:=1;

  for i:=2 to n do

    if odd(i) then

      begin yes:=true;

        w:=trunc(sqrt(I));k:=2;

        while (k<=w)and yes do

          begin if i mod k=0 then yes:=false; k:=k+1;end;

        if yes then begin write(i:5);t:=t+1; end;

      end;

  writeln(‘total=’,t);
end.

 

[解法二]筛法求素数:

    1.建立一个包括23,…,N的数据“集合”R

    2.顺序取R中的数(从素数2开始),同时将其及能整除它的数从R中划去。“筛法求素数”的过程如下图示:

素数R[1]

               数据集合R

   2

{ 2345678 9101112,……}

   3

{     3     5      7    9     11   ……}

   5

{             5      7            11   ……}

 ……

                 ………

    这样便可得到所求的素数:235,……。

[程序]

program Sushu;

var  i,j,k,n,w,t:integer;

  R,P:array [1..500] of integer;

Begin

  write('N=');readln(n);

  if (n<2) or (n>500) thenbegin writeln('Input N error!');halt end;

  for i:=2 to n do R[i-1]:=i; writeln('Result:');t:=0;k:=n-1;

  while k>0 do

    begin P:=R;  {数组P保存在P}

      write(R[1]:5);  {输出素数} t:=t+1;w:=R[1];j:=0;

      for i:=1 to k do

        if P[i] mod w<>0 then  {划去w W的倍数}

          begin j:=j+1; R[j]:=P[i];end;  {重新构造集合R}

      k:=j; {新建后R的元素个数}

    end;  writeln;writeln('Total=',t);

end.

更多精彩,请关注:http://www.czos.cn



返回顶部