高财富值求fortran 95程序! 具体要求是:求P的e次方关于n的余数(具体见下图) 具体算 100
高财富值求fortran95程序!具体要求是:求P的e次方关于n的余数(具体见下图)具体算法见图片,简单来说就是先把e转换成2进制(图片里的例子e=67,),然后P求平方...
高财富值求fortran 95程序!
具体要求是:求P的e次方关于n的余数(具体见下图)
具体算法见图片,简单来说就是先把e转换成2进制(图片里的例子e=67,),然后P求平方再求其关于n的余数,最后把e的二进制里等于0的项去掉其他的相乘再求余树,C就求出来了,求这个的fortran 95程序,谢了! 展开
具体要求是:求P的e次方关于n的余数(具体见下图)
具体算法见图片,简单来说就是先把e转换成2进制(图片里的例子e=67,),然后P求平方再求其关于n的余数,最后把e的二进制里等于0的项去掉其他的相乘再求余树,C就求出来了,求这个的fortran 95程序,谢了! 展开
1个回答
展开全部
c fortran77程序--在fortran95中应该能正常运行
dimension a(32),b(32)
integer p,e,n,a,b,i,j,k,m
p=1563
e=67
n=3599
do 5 i=1,32
a(i)=0
b(i)=1
5 continue
call dec2bin(e,a)
do 10 i=32,1,-1
if (a(i).ne.0) then
k=i
goto 12
endif
10 continue
12 b(1)=modd(p,n)
do 15 i=2,k
b(i)=modd(b(i-1)*b(i-1),n)
15 continue
m=1
do 20 i=1,k
if (a(i).eq.1) then
m=m*b(i)
endif
20 continue
write(*,*) modd(m,n)
end
c 自定义求余函数(返回值的绝对值小于n的一半)
function modd(p,n)
integer modd,p,n
modd=mod(p,n)
if (modd.gt.n/2) then
modd=modd-n
endif
return
end
c 将10进制数转为2进制,结果存放在数组a中
c 最低位存放在a(1)中,其余类推
subroutine dec2bin(e,a)
dimension a(32)
integer e,a,i,j
i=0
10 if (e.gt.0) then
i=i+1
j=mod(e,2)
a(i)=j
e=e/2
goto 10
endif
return
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询