📄 prime palindrome.cpp
字号:
#include<stdio.h>
#include<math.h>
#include<string>
#include<iostream>
#define N 9999
#define M 1000000000
using namespace std;
int Isprim(long,int []);
int main(){
int num,temp,turn,k,l,a;//l为数的位数 k为结果的个数
long index;
int prim[10000];
//创建一个数组,存储一到十亿开方的素数
int i,j=1,b;
prim[0]=2;
for(i=2;i*i<=M;i++){
for(b=2;b<=sqrt(i);b++)
if(i%b==0) i++;
prim[j]=i; j++;
}
//个位和十位的直接打印
printf("3\n5\n7\n11\n"); k=4;
//再找更大位数的回文素数
for(num=1;num<=N;num++){
temp=num; l=0; turn=0;
while(temp) {turn=turn*10+temp%10; temp/=10; l++; }//将数翻转,并求数的位数
for(a=0;a<=9;a++){//a为中间位。
index=num*pow(10,l+1)+a*pow(10,l)+turn;//构造回文素数
if(Isprim(index,prim)) { printf("%ld\t",index); k++; }
}
}
printf("共有%d个\n",k);
system("pause");
return 0;
}
int Isprim(long n,int p[]){
int i;
for(i=0;p[i]<=sqrt(n);i++)
if(n%p[i]==0) return 0;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -