fortran问题

2025-04-27 05:02:43
推荐回答(1个)
回答1:

因为只需计算到39,计算范围很小,就没考虑运行时间,只编写了需要的程序。   
 
      !
      integer,parameter:: nn=39
      integer ii,jj,kk,num,total,prime(nn)
      
      !找出3-39之间的素数
      num=0
      check_prime: do ii=3,nn
        do jj=2,ii-1
          if(mod(ii,jj).eq.0) cycle check_prime
        end do
        num=num+1
        prime(num)=ii
      end do check_prime

      !输出找出的素数
      print *,'prime'
      do ii=1,num
        print *,prime(ii)
      end do

      !找出符合条件的素数组合并输出
      print *,'group'
      total=0
      do ii=1,num-2
        do jj=ii+1,num-1
          if(prime(jj)-prime(ii).eq.2) then !第二个比第一个大2时
            do kk=jj+1,num
              if(prime(kk)-prime(jj).eq.4) then !第三个比第二个大4时
                total=total+1
                print *,prime(ii),prime(jj),prime(kk)
              end if
            end do
          end if
        end do
      end do

      !输出满足条件的素数一共有几组
      print *,'total number=',total

      stop
      end