题解:UVA12802 Gift From the Gods
题目大意:
无限输入一个正整数
大体思路:
先判断该数是否为回文数,在判断该数是否为素数。\ 判断素数模板如下:(代码有注释)
bool is_Prime(int n){
if(n<=1) return 0;//小于等于1时必不为素数。
if(n==2) return 1;//等于2时必为素数。
for(int i=2;i*i<=n;i++)
if(n%i==0)//如果被i整除,即为合数
return false;
return true;
}
判断回文数模板如下:(代码有注释)
bool is_Hw(int n){
int cnt=0,a[1005];//cnt记有几位,a数组记n的每一位
while(n--){//分解n
cnt++;//下标加一(位数加一)
a[cnt]=n%10;//取到最后一位
n/=10;
}
for(int i=1;i<=cnt;i++){//判断回文数
if(a[i]!=a[cnt-i+1]) return 0;//如果不同,即不为回文数。
}
return 1;
}
代码:(去注释)
#include<bits/stdc++.h>
using namespace std;
bool is_Prime(int n){
if(n<=1) return 0;
if(n==2) return 1;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
bool is_Hw(int n){
int cnt=0,a[1005];
while(n--){
cnt++;
a[cnt]=n%10;
n/=10;
}
for(int i=1;i<=cnt;i++){
if(a[i]!=a[cnt-i+1]) return 0;
}
return 1;
}
int main(){
int n;
while(cin>>n){
cout<<2*n<<endl;
if(is_Hw(n)==1&&is_Prime(n)==1) break;
}
return 0;
}