Как заявил TJCrowder, i
не объявлено;однако, я не думаю, что это ваша единственная проблема.Вы используете небольшое подмножество простых чисел в качестве основы для поиска всех простых чисел.Это не сработает.Вот несколько примеров чисел, которые нельзя разделить на {2, 3, 5, 7}, но которые не являются простыми числами:
121 = 11 * 11
169 = 13 * 13
...
Более точный подход состоит в использовании так называемого сита Эратосфен .Существуют и другие подходы, но их сложность гораздо хуже.
Вариант сита Эратосфена называется ситом Эйлера (или ситом Эйлера).Это немного более эффективно, если использовать несколько коротких путей и сократить количество вычислений.