如何在C语言中实现多线程因子分解

   2024-09-30 8400
核心提示:在C语言中,可以使用POSIX线程库(pthread)来实现多线程因子分解#includestdio.h#include stdlib.h#include pthread.h#include ma

在C语言中,可以使用POSIX线程库(pthread)来实现多线程因子分解

#include<stdio.h>#include <stdlib.h>#include <pthread.h>#include <math.h>typedef struct {    int number;    int start;    int end;} FactorData;void *find_factors(void *arg) {    FactorData *data = (FactorData *)arg;    int number = data->number;    int start = data->start;    int end = data->end;    for (int i = start; i <= end; i++) {        if (number % i == 0) {            printf("Thread %lu: %d is a factor of %d\n", pthread_self(), i, number);        }    }    return NULL;}int main() {    int number;    printf("Enter the number to be factorized: ");    scanf("%d", &number);    int num_threads = 4;    pthread_t threads[num_threads];    FactorData data[num_threads];    int range = (int)sqrt(number) / num_threads;    for (int i = 0; i < num_threads; i++) {        data[i].number = number;        data[i].start = i * range + 1;        data[i].end = (i + 1) * range;        pthread_create(&threads[i], NULL, find_factors, (void *)&data[i]);    }    for (int i = 0; i < num_threads; i++) {        pthread_join(threads[i], NULL);    }    return 0;}

这个程序首先接收一个整数输入,然后创建4个线程。每个线程负责查找一部分范围内的因子。线程之间不会重复查找因子。最后,主线程等待所有子线程完成任务。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号