Это не на все алгоритм AKS для простоты.Это выглядит как слегка измененная версия задачи RosettaCode , которая реализует экспоненциальную лемму времени.Это будет медленнее, чем простое пробное деление, не говоря уже о том, что без модульной арифметики эта реализация в принципе бесполезна, поскольку она будет переполнена при вводе данных даже игрушечного размера.не вызывайте isprime () для одних и тех же входов снова и снова.Вы можете звонить один раз на номер и просто запомнить последнее простое число, которое вы нашли.Если isprime (i) имеет значение true, подсчитайте, был ли последний найденный вами i-2.Теперь вам не нужны ни повторные вызовы, ни массив значений.
Еще лучше, поскольку вы хотите сгенерировать все простые числа для n, это использовать сито.Это гораздо более эффективно для этой задачи, чем тесты на простоту, даже с гораздо лучшими тестами на простоту.Вы можете найти тривиальную версию C на странице RosettaCode для этой задачи .Есть лучшие, но это не имеет значения, учитывая то, с чего вы начинаете.