не совсем понял логику того, что происходит в f().
Я бы сделал так:
1. Считать n чисел.
2. Найти максимальное.
3. Найти все простые до sqrt(n), записав их в массив.
4. Поочередно смотреть остаток от деления всех пользовательских чисел на все найденные простые. Если хотя бы в одном случае остаток 0 - число не простое, иначе - простое.
Попробуйте сами код, если что - помогу.