Java 和 Python 返回不同的总和并尝试与 C++ 进行比较
Posted
技术标签:
【中文标题】Java 和 Python 返回不同的总和并尝试与 C++ 进行比较【英文标题】:Java and Python return different sums and trying to compare with C++ 【发布时间】:2017-05-09 12:59:45 【问题描述】:为什么 Java 和 Python 从 1 到 100 万的总和给出不同的输出。我尝试了较小的数字,代码输出相同的结果,最多为 100 (5050)
Python
from datetime import datetime
start_time = datetime.now()
sum = 0
for i in range(1,1000000+1):
#print(i)
sum+=i
print(sum)
end_time = datetime.now()
print('Duration: '.format(end_time - start_time))
Java
package sum_1_to_1000;
public class sum
public static void main(String[] args)
// TODO Auto-generated method stub
long startTime = System.currentTimeMillis();
int sum = 0;
for(int i = 1; i <= 1000000; i++)
//System.out.println(i);
sum+=i;
System.out.println(sum);
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(Math.pow(totalTime*10, -3));
我尝试用 C++ 来做,但我仍在学习。如何让下面的代码运行,并打印出运行时间?有没有可以在线运行C++的地方?
#include <iostream>
using namespace std;
int main()
int sum = 0;
int i;
for(i = 1; i <=2; i++)
sum+=i;
printf("The Sum is: ", sum);
【问题讨论】:
您是否考虑过每种语言的整数限制? Java 中的int
被限制为 4 个字节,并且它是有符号的,因此它只能上升到 2^31-1
。 Python int
s 的范围更广。在 C++ 中,我相信它......取决于。
你的 C++ 代码没有被编译,因为 printf() 需要 stdio.h 并且你没有指定像 "%d" 这样的东西。
此外,由于您的代码是 C++,您可以使用 cout 进行输出
您可以尝试在 java 示例中使用 long 而不是 int,因为 khelwood 说您将在 sum integer 中溢出。
【参考方案1】:
for(int i = 1; i <= 1000000; i++)
//System.out.println(i);
sum+=i;
真正的sum=(1+1000000)*500000=500000500000
,比Integer.MAX_VALUE (2^31-1)
大
【讨论】:
您应该找到 Python(和 C++)的Integer.MAX_VALUE
等效项来完成此答案。
那么如何打印实数呢?我应该使用什么其他类型来代替 int?
Integer.MAX_VALUE 在java中等于2147483647,可以用long在java中是8字节长度;在python2中有int和long,在Python 2中有sys.maxint =9223372036854775807(2^63 - 1);但是在 python3 中,只有 int ,在 Python 3 中 int 类型与 Python 2 中的 long 类型相同【参考方案2】:
我有朋友使用 repl.it https://repl.it/languages 有很多语言可供您选择使用。请记住,您是在其他人的服务器上运行它,所以要小心敏感信息
【讨论】:
【参考方案3】:我过去也使用 CodeChef.com 在线编译代码。
【讨论】:
@molbdnilo 不,他只是回答了最后一个询问外部资源的问题“有地方可以在线运行 C++ 吗?”即使他不应该; ) (嗯,我想这就是它) 我试过 codecheff,c++14 可以,但 c++ 4.9.2 不行。有什么不同?如何打印执行时间?是否有另一个打印命令我单独打印变量,没有任何格式?和 Java 一样,Int 不返回整个值,除了 int 之外还有什么类型可以使用吗?以上是关于Java 和 Python 返回不同的总和并尝试与 C++ 进行比较的主要内容,如果未能解决你的问题,请参考以下文章