RosettaCodeData/Task/Additive-primes/Processing/additive-primes.processing

37 lines
738 B
Plaintext

IntList primes = new IntList();
void setup() {
sieve(500);
int count = 0;
for (int i = 2; i < 500; i++) {
if (primes.hasValue(i) && primes.hasValue(sumDigits(i))) {
print(i + " ");
count++;
}
}
println();
print("Number of additive primes less than 500: " + count);
}
int sumDigits(int n) {
int sum = 0;
for (int i = 0; i <= floor(log(n) / log(10)); i++) {
sum += floor(n / pow(10, i)) % 10;
}
return sum;
}
void sieve(int max) {
for (int i = 2; i <= max; i++) {
primes.append(i);
}
for (int i = 0; i < primes.size(); i++) {
for (int j = i + 1; j < primes.size(); j++) {
if (primes.get(j) % primes.get(i) == 0) {
primes.remove(j);
j--;
}
}
}
}