高财富值求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程序,谢了!
展开
 我来答
gcbjoy
2016-03-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:92%
帮助的人:2142万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式