Программа которая находит все простые числа из интервала в С(Си) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста написать эту программу, я пытался сам, но у меня выводит ГЛУПОСТЬ Вот что нужно... Написать программу, которая находит все простые числа из интервала. Вводим два целых числа

A

и

B

, которые представляют собой начало и конец отрезка, программа выводит список всех простых чисел, расположенных от меньшего к большему. Это как оно должно выглядеть...

Решение задачи: «Программа которая находит все простые числа из интервала в С(Си)»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define SIZE_ARRAY (256)
 
static unsigned * primes = NULL;
static unsigned counter = 2, current_size = 0;
 
void give_me_mem ()
{
    current_size++;
    primes = realloc(primes, current_size * SIZE_ARRAY * sizeof(unsigned));
}
 
int is_prime (unsigned n)
{
    unsigned i = 0;
 
    if (n < 2)
        return 0;
 
    for (; i < counter; i++)
        if (n % primes[i] == 0)
            return 0;
 
    return 1;
}
 
void push_me_to_primes (unsigned n)
{
    if (counter / current_size == SIZE_ARRAY)
        give_me_mem();
    primes[counter++] = n;
}
 
void dump (unsigned start, unsigned end)
{
    unsigned i = 0;
 
    fprintf(stdout, "primes between %u and %u are:\n", start, end);
 
    while (i < counter && primes [i] < start)
        i++;
 
    while (i < counter)
        fprintf(stdout, "%u  ", primes[i++]);
    putchar('\n');
}
 
int main(int argc, char ** argv)
{
 
    unsigned start = 10, end = 100, i = 1;
 
    give_me_mem();
    primes[0] = 2;
    primes[1] = 3;
 
    for (; i <= end; i += 2)
        if (is_prime(i))
            push_me_to_primes (i);
 
    dump(start, end);
 
    free(primes);
 
    exit(EXIT_SUCCESS);
}

Объяснение кода листинга программы

В данном коде реализована программа для поиска простых чисел в заданном интервале. Список действий программы:

  1. Включаем необходимые заголовочные файлы:
    • stdio.h - для работы с функциями ввода-вывода;
    • string.h - для работы со строками;
    • stdlib.h - для работы с функцией realloc.
  2. Определяем константу SIZE_ARRAY - размер массива для хранения простых чисел.
  3. Статически объявляем переменные:
    • primes - указатель на массив для хранения простых чисел;
    • counter - счетчик простых чисел;
    • current_size - размер выделенной памяти под массив.
  4. Функция give_me_mem - выделяет дополнительную память под массив primes.
  5. Функция is_prime - проверяет число на простоту. Если число меньше или равно 1, возвращает 0. Иначе, ищет делители числа от 2 до counter (включительно). Если делитель найден, возвращает 0. В противном случае, возвращает 1.
  6. Функция push_me_to_primes - добавляет число в массив primes. Если counter достигает SIZE_ARRAY, вызывается функция give_me_mem для выделения дополнительной памяти.
  7. Функция dump - выводит простые числа в заданном интервале. Выводит число от 2 до counter и проверяет, является ли оно простым. Если число простое, выводит его.
  8. В функции main:
    • Инициализируем переменные start и end - границы интервала для поиска простых чисел;
    • Вызываем функцию give_me_mem для выделения памяти под массив primes;
    • Инициализируем первые два элемента массива primes - 2 и 3;
    • Запускаем цикл для поиска простых чисел в интервале от start до end с шагом 2;
    • Если число простое, вызываем функцию push_me_to_primes для добавления числа в массив primes;
    • Выводим простые числа в заданном интервале с помощью функции dump;
    • Освобождаем память, выделенную под массив primes, с помощью функции free;
    • Завершаем программу с кодом EXIT_SUCCESS.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы