2014-04-29 27 views
0

我在这里遇到了一些小问题。基本上我下面的程序只是产生两个随机数并将它们分开。随机生成数字,直到它们完全分开

在此之前,我插入一条语句,如果num1不能被num2整除,那么num2必须生成一个介于1到“num1”之间的数字,直到它可以被整除。

但最终它不断给我一个不可分的数字(或基本上给小数点)。我试着在因特网上寻找一个例子,并用模运算符理解得很好。我在哪里出了问题?我只是希望这两个数字都是可以分割的。

下面是我的代码:

int num1, num2, real_ans; 
Random randomGenerator = new Random(); 

num1 = randomGenerator.nextInt(100) + 1; 
num2 = randomGenerator.nextInt(100) + 1;    

if (num1%num2!=0) { 
    do { 
    num2 = randomGenerator.nextInt(num1) + 1 
    } while(num1%num2==0); 
} 
real_ans = num1/num2; 
+0

[重新生成随机数。 Android?](http://stackoverflow.com/questions/23337847/re-generate-random-number-android) –

回答

2

更改DO/while循环:

do{ 
    num2 = randomGenerator.nextInt(num1) + 1 
} while(num1 % num2 != 0); 

(注意!=)。

循环直到数字完全分开。

+0

ahhh它的作品!谢谢你哦!现在我懂了。 :) –

0

您正在迭代的条件是,如果num1可以被num2整除,请继续迭代。将条件更改为do{...}while (num1%num2 != 0);

您应该能够找到一个可以将num1与该代码相除的数字。唯一的情况下,它仍然不会工作是当num1是素数,所以我建议你检查num1是否是素数,并且只生成num2,当num1不是素数。

+0

'num2'最终将等于'1',它将分割任何东西(包括素数)。所以无限循环是不可能的。 –

+0

是的,这是真的,但它会破坏随机性,如果num2是1,那么每当num1是质数时,因为这是可预测的。只是一个想法。 – anirudh

+0

是的,我确实为此发表了声明。只是我没有发布在这里,因为这不是主要问题。但是,谢谢你们! –