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

简答题

编程实现:超级素数

在大于1的自然數中,除了1和它本身以外不再有其他因数的数,被称为素数,又叫质数。超级素数是指一个素数,每去掉最后一位上一个数字,总能保证剩下的数依然为素数。比如

"373"就是一个超级素数,去掉个位的"3"后,"37"依然是素數:继续去掉"37"个位的"7"后,"3"还是素数。

程序命名:prime.cpp

输入

输人一个整数n(10<=n<=10^8)

输出

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


样例输入1:

30

样例输出1:

6

样例输出1提示:2 3 5 7 23 29

样例输入2:

50

样例输出2:

8

样例输出2提示:2 3 5 7 23 29 31 37

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

答案:

br />```cpp#include #include bool isPrime(int n) if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;int countSuperPrime(int n) int count = 0;for (int i = 2; i <= n; i++) {if (isPrime(i) && isPrime(i / 10) && isPrime(i / 100) && isPrime(i / 1000)) {count++;}}return count;int main() int n;std::cin >> n;std::cout << countSuperPrime(n) << std::endl;return 0;```

解析:

【喵呜刷题小喵解析】

该程序主要目的是找出小于等于给定数字n的超级素数个数。超级素数是指一个素数,每去掉最后一位上一个数字,总能保证剩下的数依然为素数。

程序首先定义了一个`isPrime`函数,用于判断一个数是否为素数。接着定义了一个`countSuperPrime`函数,用于计算小于等于给定数字n的超级素数个数。

在`countSuperPrime`函数中,从2开始遍历到n,对于每个数i,如果i是素数,并且i/10、i/100、i/1000也是素数,那么i就是一个超级素数,计数器count加1。

最后,在`main`函数中,从标准输入读取一个整数n,然后调用`countSuperPrime`函数计算小于等于n的超级素数个数,并将结果输出到标准输出。

注意,由于题目中给定的n的范围是10^8,直接遍历所有小于等于n的数可能会超时,因此需要对算法进行优化。在本程序中,优化方法是通过判断i、i/10、i/100、i/1000是否都是素数来快速判断i是否为超级素数。
创作类型:
原创

本文链接:编程实现:超级素数 在大于1的自然數中,除了1和它本身以外不再有其他因数的数,被称为素数,又叫质数。

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

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

分享考题
share