91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C語言中實現多線程因子分解

小樊
83
2024-09-12 12:31:04
欄目: 編程語言

在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個線程。每個線程負責查找一部分范圍內的因子。線程之間不會重復查找因子。最后,主線程等待所有子線程完成任務。

0
龙泉市| 商都县| 开化县| 根河市| 浦江县| 浦东新区| 沭阳县| 清流县| 外汇| 沂水县| 清苑县| 花莲市| 博乐市| 诸城市| 离岛区| 湖州市| 贵南县| 余江县| 凤阳县| 杭锦后旗| 潍坊市| 泰安市| 汶上县| 宝应县| 马公市| 文登市| 瓦房店市| 休宁县| 涟水县| 读书| 石柱| 镇安县| 泸州市| 福泉市| 岚皋县| 微山县| 阳曲县| 红河县| 丹棱县| 柘城县| 巨鹿县|