Interessant allemaal, maar beide oplossingen zouden niet de mijne zijn, omdat ze maar een beperkt deel van de mogelijke delingen geven.
Om een voorbeeld te geven:
Produkt = 100
Geboden oplossing komt met een maximale deler van 10, terwijl ook bijv. 2x50=100
Ik zou het volgende doen:
Produktschatting Ps = int(random * max)
Deler 1 D1 = int(random * (Ps/2) + 1) (geeft maximum range)
Produkt P = Ps - (Ps % D1)
(% = mod = restwaarde van Ps wanneer gedeeld op D1)
Deler 2 D2 = P / D1
...
Voorbeeldje:
Ps = 100
D1 = 49
P = 100 - (100 % 49) = 100 - 2 = 98
D2 = 98 / 49 = 2
enzovoorts....
euhh... nooit geprogrammeerd in de C variant voor Palm... zit toch neem ik aan wel een % operator in?
Hier in Java:
public class test {
public static void main(String args[]) {
int max = 100;
for(int t=0;t<100;t++) {
int p = (int) (Math.random() * max);
int d1 = (int) (Math.random() * (p/2) + 1);
p = p - (p % d1);
int d2 = (int) p / d1;
System.out.println(p + "/" + d1 + "=" + d2);
}
}
}