1 条题解
-
0
#include<bits/stdc++.h> using namespace std; bool isPrime(int p){ if(p<=3) return p>1; if(p%2==0 || p%3==0) return false; for(int i=5;i*i<=p;i+=6){ if(p%i==0||p%(i+2)==0) return false; } return true; } int reHigh(int r){ if(r<=9) return 0; int res=0,mul=1; while(r>9){ res+=r%10*mul; r/=10; mul*=10; } return res; } int main(){ //一、分析问题 //已知:所有小于3000的四位数。 //未知:求出所有小于 3000 的四位的纯粹素数。 //关系: 一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。 //二、定义变量(已知、未知、关系) int t; bool isFind; //三、输入已知 //四、根据关系计算 for(int i=1001;i<3000;i+=2){ t=i; isFind=true; while(t){ if(!isPrime(t)){ isFind=false; break; } t=reHigh(t); } //五、输出未知 if(isFind) cout<<i<<endl; } return 0; }
信息
- ID
- 553
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 9
- 标签
- 递交数
- 17
- 已通过
- 2
- 上传者