当前位置: 代码迷 >> 综合 >> [pascal]对“求1-100之间的所有素数”的三种不同循环结构算法的分析
  详细解决方案

[pascal]对“求1-100之间的所有素数”的三种不同循环结构算法的分析

热度:48   发布时间:2024-01-09 20:52:17.0

  在做第四章(循环结构程序设计)的作业时,有一道“求1-100之间的所有素数”的题目,有意思的是最后出现了三种不同的写法,这三种写法的基本思想都差不多但其核心算法不同,做过求素数算法的人都知道,所谓素数就是除了1和它本身外没有其他数可以整除它的数,固然其核心算法就是检验这个数是否可以被其他数整除。毋庸置疑这个核心算法应当由循环结构来完成。明确了这些之后我们回来再说说这三种写法:

  第一种写法是我最初尝试写这个题目时设计的算法(由于其核心算法采用REPEAT UNTIL型循环,故我们以下简称为REPEAT循环),它的代码是这样的:

REPEAT.PAS

PROGRAM prime(input,output);
  {求100以内质数}
  VAR
    {flagnum用来标示当前数是否为质数}
    i,num:integer;
    flagnum:boolean;
  BEGIN
    {输出2为质数,下面将不再考虑2}
    writeln(
'  2 is a prime number ... ' );
    {下面开始判断3到100中的数那些是质数}
    FOR num:
= 3  TO  100  DO
      BEGIN
        {置初值}
        flagnum:
= true ;
        i:
= 2 ;
        REPEAT
          {用当前数num去除i,如果可以被整除则标记其为非质数}
          IF num MOD i
= 0
            THEN flagnum:
=
  相关解决方案