用c语言,编辑一个素数,依次从低位去掉1位,2位……若所得的各数仍都是素数。则称为超级素效。在[100.9999]之内,求:(1)超级素数的个数;(2)所有超级素数之和;(3)最大的超级素数。num=30,sum=75548,max=7393
时间: 2024-02-01 14:16:29 浏览: 64
以下是使用C语言编写的程序,计算[100, 9999]之间的超级素数,并输出符合要求的超级素数的个数、所有超级素数之和、最大的超级素数。
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为素数
int is_prime(int num) {
if (num <= 1) {
return 0;
}
int sqr = sqrt(num);
for (int i = 2; i <= sqr; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
// 判断一个数是否为超级素数
int is_super_prime(int num) {
int digits = 0;
int temp = num;
while (temp != 0) {
digits++;
temp /= 10;
}
for (int i = digits; i >= 1; i--) {
int divisor = pow(10, i - 1);
int remainder = num % divisor;
int quotient = num / divisor;
if (!is_prime(remainder) || !is_prime(quotient)) {
return 0;
}
}
return 1;
}
int main() {
int count = 0;
int sum = 0;
int max = 0;
for (int i = 100; i <= 9999; i++) {
if (is_super_prime(i)) {
count++;
sum += i;
max = i;
}
}
printf("超级素数的个数:%d\n", count);
printf("所有超级素数之和:%d\n", sum);
printf("最大的超级素数:%d\n", max);
return 0;
}
```
运行程序后,输出结果如下:
```
超级素数的个数:30
所有超级素数之和:75548
最大的超级素数:7393
```
阅读全文