2014-04-29 66 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

是的,我確實爲此發表了聲明。只是我沒有發佈在這裏,因爲這不是主要問題。但是,謝謝你們! –