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