int main() { getprimes(); int i, temp, count = 0; for(i = 0; Primes[i]; i++) { temp = Primes[i]; do { if(!isprime(temp = rotateright(temp))) break; }while (temp != Primes[i]); if(temp == Primes[i]) count++; } printf("%d\n", count); return 0; }
int main() { getprimes(1000000); int p, q, r, f; int sum = 0; for(p = 4; Primes[p]; p++) //skip 2,3,5,7 { q = Primes[p]; f=0; do if(!isPrime(q)) f=1; while(q/=10); if(f==1) continue; q = Primes[p]; r = 1; do { if(!isPrime(q)) f=1; r *= 10; } while(q%=(1000000/r)); if(f==1) continue; sum += Primes[p]; printf("%d is a truncatable prime.\n", Primes[p]); } printf("%d\n", sum); return 0; }
/* * This is a utility function, no need to have anything in the lower * layer for this at all */ int MPI_Dims_create(int nnodes, int ndims, int *dims) { int i; int freeprocs; int freedims; int nprimes; int *primes; int *factors; int *procs; int *p; int err; OPAL_CR_NOOP_PROGRESS(); if (MPI_PARAM_CHECK) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (NULL == dims) { return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); } if (1 > ndims) { return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_DIMS, FUNC_NAME); } } /* Get # of free-to-be-assigned processes and # of free dimensions */ freeprocs = nnodes; freedims = 0; for (i = 0, p = dims; i < ndims; ++i,++p) { if (*p == 0) { ++freedims; } else if ((*p < 0) || ((nnodes % *p) != 0)) { return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD, MPI_ERR_DIMS, FUNC_NAME); } else { freeprocs /= *p; } } if (freedims == 0) { if (freeprocs == 1) { return MPI_SUCCESS; } return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_DIMS, FUNC_NAME); } if (freeprocs < 1) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_DIMS, FUNC_NAME); } else if (freeprocs == 1) { for (i = 0; i < ndims; ++i, ++dims) { if (*dims == 0) { *dims = 1; } } return MPI_SUCCESS; } /* Compute the relevant prime numbers for factoring */ if (MPI_SUCCESS != (err = getprimes(freeprocs, &nprimes, &primes))) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, err, FUNC_NAME); } /* Factor the number of free processes */ if (MPI_SUCCESS != (err = getfactors(freeprocs, nprimes, primes, &factors))) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, err, FUNC_NAME); } /* Assign free processes to free dimensions */ if (MPI_SUCCESS != (err = assignnodes(freedims, nprimes, primes, factors, &procs))) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, err, FUNC_NAME); } /* Return assignment results */ p = procs; for (i = 0; i < ndims; ++i, ++dims) { if (*dims == 0) { *dims = *p++; } } free((char *) primes); free((char *) factors); free((char *) procs); /* all done */ return MPI_SUCCESS; }