Unprimeable numbers: Difference between revisions

m
Reformatted to reduce line count
m (→‎{{header|REXX}}: optimized the program.)
m (Reformatted to reduce line count)
Line 223:
 
// return number of decimal digits
int count_digits(integer n) {
{
int digits = 0;
for (; n > 0; ++digits)
Line 232 ⟶ 231:
 
// return the number with one digit replaced
integer change_digit(integer n, int index, int new_digit) {
{
integer p = 1;
integer changed = 0;
Line 243 ⟶ 241:
 
// returns true if n unprimeable
bool unprimeable(const sieve_of_eratosthenes& sieve, integer n) {
{
if (sieve.is_prime(n))
return false;
int d = count_digits(n);
for (int i = 0; i < d; ++i) {
for (int j = 0; j <= 9; ++j) {
{
for (int j = 0; j <= 9; ++j)
{
integer m = change_digit(n, i, j);
if (m != n && sieve.is_prime(m))
Line 260 ⟶ 255:
}
 
int main() {
{
const integer limit = 10000000;
sieve_of_eratosthenes sieve(limit);
Line 272 ⟶ 266:
integer n = 100;
integer lowest[10] = { 0 };
for (int count = 0, found = 0; n < limit && (found < 10 || count < 600); ++n) {
if (unprimeable(sieve, n)) {
{
if (unprimeable(sieve,count n)< 35) {
{
if (count < 35)
{
if (count != 0)
std::cout << ", ";
Line 286 ⟶ 277:
std::cout << "\n600th unprimeable number: " << n << '\n';
int last_digit = n % 10;
if (lowest[last_digit] == 0) {
{
lowest[last_digit] = n;
++found;
1,777

edits