import java.util.Random;
public class SatPrimes01 {
// Multiplies two integers n and m
static int mult(int n, int m) {
if (m < 0) {
return mult(n, -m);
}
if (m == 0) {
return 0;
}
if (m == 1) {
return 1;
}
return n + mult(n, m - 1);
}
// Is n a multiple of m?
static int multiple_of(int n, int m) {
if (m < 0) {
return multiple_of(n, -m);
}
if (n < 0) {
return multiple_of(-n, m); // false
}
if (m == 0) {
return 0; // false
}
if (n == 0) {
return 1; // true
}
return multiple_of(n - m, m);
}
// Is n prime?
static int is_prime(int n) {
return is_prime_(n, n - 1);
}
static int is_prime_(int n, int m) {
if (n <= 1) {
return 0; // false
} else if (n == 2) {
return 1; // true
} else {
if (m <= 1) {
return 1; // true
} else {
if (multiple_of(n, m) == 0) {
return 0; // false
}
return is_prime_(n, m - 1);
}
}
}
public static void main(String[] args) {
Random rand = new Random(42);
int n = rand.nextInt();
if (n < 1 || n > 46340) {
return ;
}
int result = is_prime(n);
int f1 = rand.nextInt();
if (f1 < 1 || f1 > 46340) {
return ;
}
int f2 = rand.nextInt();
if (f1 < 1 || f1 > 46340) {
return ;
}
if (result == 1 && mult(f1, f2) == n && f1 > 1 && f2 > 1) {
assert false;
} else {
return ;
}
}
}