供参考:
#include<stdio.h>
int isPrime(int n) //判断素数
{
int i;
if (n < 4) return n > 1;
if (!(n & 1)) return 0; //排除偶数
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int ispalindrome(int n) //判断回文
{
int t = n, k = 0;
while (t) {
k = k * 10 + t % 10;
t /= 10;
}
return k == n;
}
int main()
{
int s = 0, max = 0, i;
for (i = 1000; i > 0; i--) {
if (isPrime(i) && ispalindrome(i)) {
if (max == 0) max = i;
s++;
}
}
printf("max=%d, count=%d", max, s);
return 0;
}
定义一个数组a,从1-1000循环找出素数放进去,并记录个数n,再定义数组b,在数组a里从1-n循环找回文数放到数组b,并记录个数m,第一个问题在b中找最大值就可以了,第二个问题答案就是m