翻译伪代码并获得结果

时间:2014-11-10 10:23:35

标签: java pseudocode

你能帮助将这个Pseudocode翻译成java并得到结果吗? 因为我尝试但没有得到结果,我开始学习Java。

num=2
create list called list
while(true){
empty list
bool = false
for i=1 to num-1
if(num mod i==0){
add i to list
if((i &(bitwise)1)==1)
bool=!bool
}
if sum(list)==num && bool//logical and
return num; //Found the number we seek
num++
}

这是Java翻译,但我不确定,因为它没有得到结果编号

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.ArrayList;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        //set a number
int num=2;
//make list called list
ArrayList<Integer> list = new ArrayList<Integer>();
//run this while true, but just saying true makes an infinite loop 
boolean bool = true;
while(bool){
//clear the list
list.clear();
//set
bool = false;

for (int i= 1; i < num-1; i = i + 1){
    //If number modulo i is 0
    if((num % i) ==0){
        list.add(i);
        //If bitwise and of i and 1 is true
        //This is doing things with the underlying binary
    if((i & 1)==1)
        //Reverse the valuse of bool 
        bool = !bool;
    }
int sum = 0; 
//for each element in the list
for(int x: list){
    //add it to sum
    sum += sum;
}
//execute is sum and num are the same and bool is true
if ((sum == num )&& bool){}
    return num; 
    //This does nothing as it is never reached. return ends your execution 
    num++;
}
} 
    }
}

2 个答案:

答案 0 :(得分:0)

这看起来像是一些任务。无论如何,这里是伪代码的翻译:

public int code ()
{
    int num = 2;
    List<Integer> list = new ArrayList<> ();

    while (true)
    {
        list.clear ();
        boolean bool = false;

        for (int i = 1; i < num; ++i)
        {
            if (num % i == 0)
            {
                list.add (i);

                if ((i & 1) == 1)
                {
                    bool = !bool;
                }
            }
        }

        if (sum (list) == num && bool)
        {
            return num;
        }

        num++;
    }
}

private int sum (List<Integer> list)
{
    return list.stream ().mapToInt (i -> i).sum ();
}

代码肯定会花时间打印出任何结果。

尝试调用代码方法,然后您就会看到。

除此之外,您可能会问这个代码试图找到多少个数字?

好吧,通过逻辑演绎,我可以看出这段代码正试图找到奇数个奇数的最小完整数。试着考虑一下。

答案 1 :(得分:0)

它永远不会得到结果,至少可能是这样。

正如某人已经说过的那样,它试图找到具有奇数个奇数因子的最小完美数&#34;,并且任何数字中包含奇数奇数的奇数。因此,它寻找奇怪的完美数字,如果它存在或尚未被证实,那就是为什么它永远不会给你足够快的结果。它可能需要数百万年才能永远。这个问题应该由逻辑解决。

BTW:实际上我就是那个制作这个伪代码的人,更好的运气解决了下一个弱代码。 (: