一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[3000,4000]之内的所有逆向超级素数的个数。写伪代码
时间: 2023-03-24 17:04:06 浏览: 233
1155:回文三位数.cpp
我可以回答这个问题。伪代码如下:
count = // 计数器初始化为
for p in range(3001, 400, 2): // 只考虑奇数
if '' in str(p): // 如果包含,则跳过
continue
is_super_prime = True // 假设p是逆向超级素数
for i in range(1, len(str(p))): // 从最高位去掉一位,二位,三位,...
if not is_prime(int(str(p)[i:])): // 如果不是素数,则不是逆向超级素数
is_super_prime = False
break
if is_super_prime: // 如果是逆向超级素数,则计数器加1
count += 1
print(count)
其中,is_prime(n)函数用于判断n是否为素数。
阅读全文