题目描述
如果一个素数,依次去掉最高位得到一个数,这个数无前导0,并仍是素数的话,我们称其为“无瑕素数”。
比如317是素数,去掉最高位3得到17仍然是素数,再去掉最高位1得到7,仍然是素数,所以317是“无瑕素数”。
比如虽然107是素数,去掉最高位1得到7也是素数,但是因为存在前导0,所以这不是无瑕素数。
请写一个程序,判断某个素数是不是无瑕的。
输入
第一行是一个整数K,表示样例的个数。 以后每行一个整数n(2≤n≤1,000,000,000)。
输出
如果是无瑕素数,输出“Yes”,否则输出“No”。
样例输入
3 3 107 317
样例输出
Yes No Yes
#include<stdio.h>
#include<string.h>
int pd(int n)//计算去掉一位后是否为素数,是返回1,不是返回0
{
int flag=1;
if(n == 1 || n == 0)
{
flag = 0;
}
for(int i = 2; i * i <= n; i++)
{
if(n % i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int trans(int n,char str[],int wei)//n为长度,wei表示从第几个数字开始转换为整数
{
int num = 0;