中国网管论坛's Archiver

awp0907 发表于 2007-4-4 15:24

用最简单的编程语言写一段程序,求3的100次方除以7的余数。

用最简单的编程语言写一段程序,求3的100次方除以7的余数。

怕瓦落地 发表于 2007-4-4 19:03

关键是用了两个函数,  一个是乘方函数,一个求余函数
乘方函数 :lol  偶完了    求余函数似乎是 MOD
编程好久没完了。都还给老师了。

xiexz 发表于 2007-4-9 11:39

有这么麻烦吗?个人估计手工都可以算得出来,这里面肯定有个循环的规律,而不至于需要把3的100次方算出来后在去取余。

meix520 发表于 2007-4-11 16:11

main()
{
char m,n,l;
m=1;
if(n=1;n++;n<=100)
{m=3*m;
}
return(m);
l=m mod 7;
printf(this is :char\n,l)
}
我担心的是 第一:3的100方 我用char 合不合理 用其他的好象装不下
           第二:那就是里面具体的形式有没有错 只供查考 谢谢

xiexz 发表于 2007-4-11 17:03

回复 #4 meix520 的帖子

ls的,3的100次方如果这样算会不会溢出,你准备用什么格式的数字来表示?:lol

yangyu4891 发表于 2007-4-13 18:12

算法

一般方法求:X^e%n 化为三元组 (x,e,y)且初始化(x,e,1)
1.        当e为奇数时,用x*y%n代替y,用e-1代替e;
2.        当e为偶数时,用x*x%n代替x,用e/2代替e;
3.        当e=0时。Y的值为X^e%n      
     算法就是这样,程序自己写吧

xiexz 发表于 2007-4-17 10:14

ls采用第归算法?其实没必要,这道题目利用数学中的一个命题就能很好的解决。
“被乘数的积的余数=被乘数的余数对乘数的积的余数”,也就是说(3*3) mod 7 = ((3 mod 7) *3) mod 7。虽然在数值计算上它没有什么用处但在计算机实现来说切非常有用,因此求3^100 mod 7的程序大致如下:

n=3
for i=1 to 100 do
begin
  n=n mod 7
  n=n*3
end

这几乎可以肯定地说是这个命题在计算机上最简单算法了,当然这个命题可以通过手算很快算出来就是。

abnick 发表于 2007-4-30 10:55

最简单的实现 (python)

这个问题用Python实现只需要一句:

3 ** 100 % 7

自由风 发表于 2007-4-30 14:18

:L:

页: [1]

Powered by Discuz! Archiver 6.1.0  © 1999-2008 bbs.bitsCN.com