题目描述
如果一个素数,依次去掉最高位得到一个数,这个数无前导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
解题思路:本题没有多大难度,跟着题目思路走,很轻松就能过。
具体看代码注释,应该没有难懂的地方。
AC代码:
#include <stdio.h>
int k,n,cnt;
int nut[12];
bool flag1,flag2;
bool isPrime(int num)
{
if (num == 1) return false;
for (int i = 2; i*i <= num; i ++)
if ( num%i == 0)
return false;
return true;
}
bool exam(int np)
{
int s,t;
cnt = s = 1;
while ( np ) // 题目是逐个去掉最高位,这里是从个位数开始复原(逆过程),简单一点
{
t = np%10;
if (t == 0)
r

文章指导如何用C++编写程序,检查一个素数是否满足无瑕素数条件,涉及去除最高位并验证结果。
最低0.47元/天 解锁文章
1177





