program test
implicit none
logical,external :: sum_is_5,is_prime
integer :: n
print *,is_prime(32)
do n=2,100
if(sum_is_5(n).and.is_prime(n)) print *,n
end do
print *,is_prime(32)
end program test
logical function sum_is_5(i)
implicit none
integer :: i,digit(3)=0
sum_is_5=.false.
digit(1)=mod(i,10)
digit(2)=mod(i/10,10)
digit(3)=i/100
if(sum(digit)==5) sum_is_5=.true.
end function sum_is_5
logical function is_prime(j)
implicit none
integer :: j,k=2
is_prime=.true.
do while(k<j)
if(mod(j,k)==0) then
is_prime=.false.
exit
end if
k=k+1
end do
end function is_prime
123.PNG (31.96 KB, 下载次数: 242)
楚香饭 发表于 2016-10-21 09:44
第22行,图片中第24行
integer :: j,k=2
改为
kerb 发表于 2016-10-20 23:22
这种判别质数效率比较低
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |