#include <stdio.h>#include <stdbool.h>bool is_prime(int num) { if (num < 2) { return false; } for (int i = 2; i < num; i++) { if (num % i == 0) { return false; } } return true;}int main() { int test_nums[5] = {17, 34, 2, 1, 0}; for (int i = 0; i < 5; i++) { if (is_prime(test_nums[i])) { printf("%d is a prime number.\n", test_nums[i]); } else { printf("%d is not a prime number.\n", test_nums[i]); } } printf("\n"); for (int i = 100; i <= 200; i++) { if (is_prime(i)) { printf("%d ", i); } } printf("\n"); return 0;}
时间: 2024-04-28 07:22:34 浏览: 132
这是一个 C 语言程序,其目的是判断一个数是否为质数,并输出一些测试结果。程序中定义了一个用于判断一个数是否为质数的函数 is_prime(),该函数接受一个整数参数 num,返回一个布尔值,表示 num 是否为质数。函数中使用了一个 for 循环,从 2 开始,到 num-1 结束,依次判断 num 能否被这些数整除,若能,则返回 false,表示 num 不是质数。如果 for 循环结束后,都没有返回 false,那么就返回 true,表示 num 是质数。
程序中还定义了一个数组 test_nums,包含了 5 个测试用例,分别调用 is_prime() 函数,并根据函数返回值输出测试结果。接下来,程序使用 for 循环,输出从 100 到 200 之间的所有质数。
总体而言,这是一个用于测试判断质数函数的简单程序。
相关问题
帮我给下面代码做注释:#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <stdbool.h> #define THREAD_NUM 200 #define TEST_NUM 200 #define START_NUM 30000000 bool is_prime(int num) { if (num <= 1) { return false; } for (int i = 2; i * i <= num; i++) { if (num % i == 0) { return false; } } return true; } void *prime_test(void *arg) { int num = *(int *) arg; if (is_prime(num)) { printf("%d is prime\n", num); } pthread_exit(NULL); } int main() { pthread_t threads[THREAD_NUM]; int nums[TEST_NUM]; for (int i = 0; i < TEST_NUM; i++) { nums[i] = START_NUM + i; } for (int i = 0; i < THREAD_NUM; i++) { pthread_create(&threads[i], NULL, prime_test, &nums[i % TEST_NUM]); } for (int i = 0; i < THREAD_NUM; i++) { pthread_join(threads[i], NULL); } return 0; }
好的,下面是这段代码的注释:
```
#include <stdio.h> // 引入标准输入输出头文件
#include <stdlib.h> // 引入标准库头文件
#include <pthread.h> // 引入线程头文件
#include <stdbool.h> // 引入布尔类型头文件
#define THREAD_NUM 200 // 线程数
#define TEST_NUM 200 // 测试数目
#define START_NUM 30000000 // 起始数
// 判断一个数是否为质数
bool is_prime(int num) {
if (num <= 1) { // 质数定义:大于1的自然数,所以小于等于1的数不是质数
return false;
}
for (int i = 2; i * i <= num; i++) { // 判断是否为质数,从2开始循环到n的平方根
if (num % i == 0) { // 如果能被整除,则不是质数
return false;
}
}
return true; // 是质数
}
// 线程函数,判断一个数是否为质数
void *prime_test(void *arg) {
int num = *(int *) arg; // 获取参数num
if (is_prime(num)) { // 判断num是否为质数
printf("%d is prime\n", num); // 如果是质数,输出该数
}
pthread_exit(NULL); // 退出线程
}
int main() {
pthread_t threads[THREAD_NUM]; // 定义线程数组
int nums[TEST_NUM]; // 定义测试数值数组
// 初始化测试数值数组
for (int i = 0; i < TEST_NUM; i++) {
nums[i] = START_NUM + i;
}
// 创建线程
for (int i = 0; i < THREAD_NUM; i++) {
pthread_create(&threads[i], NULL, prime_test, &nums[i % TEST_NUM]);
// 创建线程,传递参数为nums[i % TEST_NUM]
}
// 等待所有线程结束
for (int i = 0; i < THREAD_NUM; i++) {
pthread_join(threads[i], NULL);
}
return 0; // 返回0表示程序正常结束
}
```
这段代码实现了一个多线程的质数测试程序,通过创建多个线程来并行地测试一定范围内的整数是否为质数,并将是质数的数值输出到控制台。其中,使用了 pthread 库来创建和管理线程,使用了数组来存储测试数值和线程对象。
#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()` 函数进行判断,如果是超级质数则输出。
阅读全文