gpt4 book ai didi

java - 不同语言的相同算法的不同输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:11 26 4
gpt4 key购买 nike

Java 源代码:

package n1_problem;

/**
*
* @author nAwS
*/
public class loop {

int loop(long i)
{
long n=i;
int count=1;
while(n>1){
if(n%2==0){
n=n/2;
}
else{
n=3*n+1;
}
count++;
}
return count;
}

int max_cycle(long j,long k){

int max=-1;
for(long i=j;i<=k;i++){
int count=loop(i);
if(count>max){
max=count;
}
}
return max;
}


}


public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

loop lp=new loop();
System.out.println("Max Cycle:"+lp.max_cycle(1,1000000));
}

}

C源代码:

int main()
{
long r,h;
int f=0;
do
{
printf("Value,r:");
scanf("%ld",&r);
printf("Value,h:");
scanf("%ld",&h);

f=max_cycle(r,h);
printf("Max:%d\n",f);

}while(getch()!='e');
}

int loop(long i)
{
long n=i;
int count=1;
while(n>1)
{
if(n%2==0){
n=n/2;
}
else{
n=3*n+1;
}
count++;
}
return count;
}

int max_cycle(long j,long k)
{

int max=1;
long i=0;
for(i=j;i<=k;i++){

int count=loop(i);
if(count>max){
max=count;
}
}
return max;
}

对于 3n+1 问题算法,这两个代码之间没有逻辑差异。唯一的问题是在 C 中它给出 476 作为最大循环数,而在 java 中它是 525...为什么??

最佳答案

在大多数 C 编译器中,long 通常定义为 4 字节整数(long int 的缩写)。在 Java 中,long 被定义为一个 8 字节的整数。

您可以更改您的 Java 代码以将 int 用于 4 字节整数,或在您的 c 程序中使用 long long 用于 8 字节整数(我认为这是在 C99 中添加的,它可能在您的编译器上可用,也可能不可用。

关于java - 不同语言的相同算法的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com