刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

提示信息:

在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数,被称为素数,又叫质数。

超级素数是指一个素数,每去掉最后面的一个数字,总能保证剩下的数依然为素数。

比如:“373”就是一个超级素数,去掉个位的“3”后,“37”依然是素数;继续去掉“37”个位的 “7”后,“3”还是素数。

编程实现:

输入一个正整数 n (10≤n≤108),输出所有小于等于n的超级素数的个数。

输入描述:

输入一个正整数 n (10≤n≤108)

输出描述:

输出所有小于等于 n 的超级素数的个数


样例输入:

30

样例输出:

6


样例输入:

50

样例输出:

8


样例输入:

100

样例输出:

13


样例输入:

500

样例输出:

21


样例输入:

1000

样例输出:

27


样例输入:

3200

样例输出:

34

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonimport mathdef is_prime(n):if n < 2:return Falsefor i in range(2, int(math.sqrt(n)) + 1):if n % i == 0:return Falsereturn Truedef is_super_prime(n):while n % 10 != 0:n = int(str(n)[:-1])if not is_prime(n):return Falsereturn Truedef count_super_primes(n):count = 0for i in range(2, n + 1):if is_super_prime(i):count += 1return countn = int(input())print(count_super_primes(n))```

解析:

【喵呜刷题小喵解析】:
首先,我们需要编写两个辅助函数,`is_prime(n)`用来判断一个数是否为素数,`is_super_prime(n)`用来判断一个数是否为超级素数。

在`is_prime(n)`函数中,我们遍历从2到n的平方根的所有整数,如果n能被其中的任何一个数整除,那么n就不是素数,返回False;否则,n就是素数,返回True。

在`is_super_prime(n)`函数中,我们不断去掉n的个位数,直到n的个位数为0,如果在这个过程中,n不再是素数,那么n就不是超级素数,返回False;否则,n就是超级素数,返回True。

最后,在`count_super_primes(n)`函数中,我们遍历从2到n的所有整数,如果某个数是超级素数,我们就将计数器加1。最后,我们返回计数器的值,即小于等于n的超级素数的个数。

在主程序中,我们读取输入的正整数n,然后调用`count_super_primes(n)`函数,输出小于等于n的超级素数的个数。
创作类型:
原创

本文链接:提示信息: 在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数,被称为素数,又叫质数。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share