#include <stdio.h>#include <math.h>int is_prime(int num) { /* * 判断一个数是否为素数 */ if (num <= 1) { return 0; } else if (num == 2) { return 1; } else if (num % 2 == 0) { return 0; } else { for (int i = 3; i <= sqrt(num); i += 2) { if (num % i == 0) { return 0; } } return 1; }}int main() { double sum_sqrt = 0; for (int i = 100; i <= 300; i++) { if (is_prime(i)) { sum_sqrt += sqrt(i); } } printf("%f", sum_sqrt); return 0;}
时间: 2024-02-14 12:09:44 浏览: 33
这段代码是一个 C 语言程序,包括 `is_prime` 函数和 `main` 函数。其中 `is_prime` 函数用于判断一个数是否为素数,返回值为 1 表示是素数,返回值为 0 表示不是素数;`main` 函数用于计算 100-300 中素数的平方根的和。
程序运行时,首先会调用 `main` 函数,遍历 100-300 中的整数,对于每个整数,如果其是素数,则计算其平方根并加到 `sum_sqrt` 变量中。最后,程序输出 `sum_sqrt` 的值。
注意,在 C 语言中,开根号的函数是 `sqrt`,而不是 Python 中的 `math.sqrt`。因此,在 C 语言中需要包含头文件 `math.h`。
相关问题
用#include<stdio.h>开头写一个判断一个数是否为素数的函数
以下是一个判断一个数是否为素数的函数的实现,使用了标准库中的math.h头文件:
```c
#include <stdio.h>
#include <math.h>
int is_prime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d是素数\n", num);
}
else {
printf("%d不是素数\n", num);
}
return 0;
}
```
该函数的原理是,一个数如果不是素数,则一定可以分解成两个因数a*b,其中a和b都不等于1和它本身,因此只需要从2到该数的平方根遍历所有可能成为因数的数,如果该数能被其中任意一个数整除,那么就不是素数。如果遍历完所有可能成为因数的数之后都没有找到能整除它的数,那么该数就是素数。
#include <stdio.h> #include <stdbool.h> #include <math.h> bool is_prime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } bool is_super_prime(int n) { while (n > 0) { if (!is_prime(n)) { return false; } n /= 10; } return true; } int main() { int n = 3; int num = pow(10, n); for (int i = 2; i < num; i++) { if (is_super_prime(i)) { printf("%d\n", i); } } return 0;}
这段代码也是用C语言实现输出超级质数的功能,只不过它是通过检查一个数的每个位数是否都是质数来判断这个数是否是超级质数。具体实现如下:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool is_super_prime(int n) {
while (n > 0) {
if (!is_prime(n % 10)) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n = 3;
int num = pow(10, n);
for (int i = 2; i < num; i++) {
if (is_super_prime(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
这个程序会输出从2到999之间的所有超级质数。这里的 `is_super_prime()` 函数会检查一个数的每个位数是否都是质数,如果是则返回 `true`,否则返回 `false`。程序通过循环遍历从2到999之间的所有数字,对每个数字调用 `is_super_prime()` 函数进行判断,如果是超级质数则输出。