中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何在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
隆安县| 思南县| 阿巴嘎旗| 永兴县| 福州市| 茶陵县| 灌云县| 兴业县| 奉节县| 巨野县| 青州市| 曲阳县| 贺兰县| 南康市| 南皮县| 东明县| 治多县| 桦南县| 湖北省| 灵武市| 台安县| 岗巴县| 四子王旗| 陆丰市| 札达县| 集贤县| 云梦县| 曲水县| 昌平区| 镇宁| 德钦县| 阿克陶县| 出国| 巴彦淖尔市| 当雄县| 临澧县| 松溪县| 石楼县| 灵台县| 横山县| 明水县|