我今天做了一个数学问题,首先在Python中尝试过,但在得到错误答案后,我使用了C#。基本上我是把所有的数字加起来(2^1000)。这些数字的总和就是答案。这里是我的Python脚本:Python数学将每个数字加在一起
#! /usr/bin/env python3
n = 2**1000
count = 0
while (n > 0):
count += n % 10
n = (int)(n/10)
print (count)
该脚本给出结果1189基本上我加入数的最后一位数,然后从数取出并重复该过程。这里是C#中的类似代码:
//Yes this string is the same output from 2^1000. I had python write the string to file for me.
String str = "10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376";
Int32 answer = 0;
foreach (char c in str)
{
answer += (Convert.ToInt32(c) - 48);
}
lblOutput.Text = answer.ToString();
C#给出输出:1366这是正确的答案。我只是好奇,为什么我的Python脚本得到错误的答案。我以错误的方式看待数学吗?
我花了第二弄清楚为什么你的C样式转换'(INT)(N/10)'是不是语法错误在Python中。 :-) – kindall 2011-04-29 22:49:36