...如果为奇数,找出不超过1000的回文素数。。。没完呢,下面还有,求助...
发布网友
发布时间:2024-10-06 08:16
我来回答
共2个回答
热心网友
时间:2024-10-06 08:29
scanf(a);
if(a%2){//奇数
for(i=1;i<1000;i++)
{ 取得素数i;
if(i为素数)取得i的各个数位进栈进队,在出栈出队一样就是回文素数 ,得到不超过1000的回文素数
if(i<100) 各个进栈位的数进栈.在出栈得到的数在判断是否为素数
}
}
else{//偶数
if(a在10到20之间)
{ 2.3.5.7.11.13.17.
用循环 加法 一个试过去
}
}
热心网友
时间:2024-10-06 08:22
如有疑问,欢迎追问。
#include <stdio.h>
bool isPrime(int n) {
if (n < 2) return 0;
if (n == 2) return 1;
for (int i = 2; i < n; i++)
if (n % i == 0) return 0;
return 1;
}
int getPal(int n) {
int a[10];
int size = 0;
while (n > 0) {
a[size++] = n % 10;
n /= 10;
}
int x = 0;
for (int i = 0; i < size; i++)
x = 10 * x + a[i];
return x;
}
bool isPalPrime(int n) {
return (n == getPal(n)) && isPrime(n);
}
bool isAbsPrime(int n) {
return isPrime(n) && isPrime(getPal(n));
}
int main () {
int n;
scanf("%d", &n);
if (n % 2 == 1) {
for (int i = 2; i <= 1000; i++)
if (isPalPrime(i)) printf("%d ", i);
printf("\n");
for (int i = 2; i <= 100; i++)
if (isAbsPrime(i)) printf("%d ", i);
printf("\n");
} else if (n >= 10 && n <= 20) {
for (int i = 2; i <= n / 2; i++)
if (isPrime(i) && isPrime(n - i)) {
printf("%d + %d\n", i, n - i);
break;
}
}
return 0;
}