Сформировать массив с первых n простых чисел натурального числового ряда - C (СИ)
Формулировка задачи:
сформировать массив с первых n простых чисел натурального числового ряда. простым считается число, у которого нет других делителей, кроме 1 и самого себя.
Решение задачи: «Сформировать массив с первых n простых чисел натурального числового ряда»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
int Prime(unsigned a, unsigned i)
{
return i*i <= a ? (a%i) && Prime(a, i + 1) : 1;
}
int main()
{
unsigned *a, n, i = 0, j;
printf("n = "); scanf("%u", &n);
a = (unsigned *)malloc(n * sizeof(*a));
a[i++] = 2;
for(j = 3; i < n; ++j)
if (Prime(j, 2))
a[i++] = j;
for(i = 0; i < n; ++i)
printf("%u ", a[i]);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и stdlib.h
- Определение функции Prime(unsigned a, unsigned i), которая проверяет, является ли число a простым. Если число делится на i без остатка, то оно не является простым и функция возвращает 0. Если число не делится на i без остатка, то оно может быть простым и функция рекурсивно вызывает саму себя для числа i+1. Если число не делится ни на одно число от 2 до i, то оно является простым и функция возвращает 1.
- В функции main() создается массив a размером n, который будет содержать первые n простых чисел. Значение n считывается с помощью функции scanf().
- Выделяется память под массив a с помощью функции malloc().
- Первый элемент массива a инициализируется значением 2, так как 2 является первым простым числом.
- Далее в цикле от 3 до n-1 (так как 2 уже добавлено в массив) проверяются все числа на простоту с помощью функции Prime(). Если число является простым, оно добавляется в массив a.
- После заполнения массива a, все его элементы выводятся на экран с помощью цикла for и функции printf().
- В конце программы возвращается 0, что означает успешное выполнение программы.