Почему мой калькулятор простых чисел C не работает? [закрыто]Linux

Ответить
Гость
 Почему мой калькулятор простых чисел C не работает? [закрыто]

Сообщение Гость »

Я пытаюсь заставить четыре потока вычислить все простые числа до 5 миллионов, используя мьютекс для обновления общей глобальной переменной счетчика.
Этот код работает только для небольших пределов и даже тогда иногда он дает неправильный ответ.
Каждый раз он терпит неудачу на больших числах, застревая на 3500 простых числах.
Вызывают ли потоки память утечка как-то? Я новичок в C, и эта задача меня затянула, заранее спасибо за помощь!

Код: Выделить всё

#include 
#include 
#include
#include 

int limit = 5000000;

pthread_mutex_t mutex;

int primes_count = 0;

typedef struct {
int value;
int is_prime;
} Number;

int verify_if_number_is_prime(int number) {
if (number value);

if (number->is_prime == 1){
pthread_mutex_lock(&mutex);
primes_count++;
pthread_mutex_unlock(&mutex);
}

pthread_exit(0);
}

int main() {
Number* numbers = malloc(sizeof(Number) * limit);

for (int i = 1; i 

Подробнее здесь: [url]https://stackoverflow.com/questions/78173802/why-is-my-c-prime-number-calculator-failing[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»