Диапазон простых чисел
это довольно простой вопрос, но я получаю ошибки при отправке
Вопрос:
Напишите функцию isPrime (n), которая выводит 1 или 0, если n является простым или нет, соответственно. Используйте эту функцию в программе, которая принимает начальное целое число (s) и конечное целое число (e) в качестве входных данных и выводит 1 каждый раз, когда обнаруживается простое число, и 0 в противном случае включаются s и e. Ниже приведено несколько примеров.
./a.out "34" "40" 0 0 0 1 0 0 0 # only 37 as prime number ./a.out "4" "9" 0 1 0 1 0 0 # only 5 and 7 as prime numbers
Что я уже пробовал:
#include<stdio.h> #include<stdlib.h> void isPrime(int n); int main(int argc,char*argv[]) { int s,e; if(argc!=3) exit(1); s=atoi(argv[1]); e=atoi(argv[2]); int i; for(i=s;i<=e;i++) { isPrime(i); } return 0; } void isPrime(int n) { int i, flag = 0; for(i=2; i<=n; ++i) { // condition for nonprime number if(n%i==0) { flag=1; break; } } if (flag==0) printf("1"); else printf("0"); }
jeron1
"получение ошибок при отправке" не могли бы вы быть более конкретными?
Member 13095321
нет, это мой школьный портал. не указывает на ошибку. просто читает... " ошибка тестирования."
Peter_in_2780
В чем ошибка(ы) вы получаете? Время компиляции? Время выполнения? Мы не сможем помочь решить вашу проблему, если вы не скажете нам, в чем она заключается.
Member 13095321
никаких ошибок во время компиляции.
Anthony Mushrow
Пробовали ли вы тестировать свою функцию isPrime локально перед отправкой? Или проверка выходных данных, когда вы отправляете свою программу (опять же, если ваш школьный портал сообщает вам, каковы были выходные данные).
Если я запускаю ваш код и передаю в программу "0" и "10", то получаю следующий результат:
1100000000
PIEBALDconsult
Похоже, что портал компилирует и запускает программу, а результаты неверны.
Вам нужно проверить больше, прежде чем отправлять.
Кроме того, ваш учитель вряд ли будет впечатлен вашей реализацией.
Member 13095321
можете ли вы предложить лучшую реализацию?
PIEBALDconsult
Я могу.
Ищи ты сито Эратосфена.
Сделайте сито от 2 до e (предварительно заполните 0 и 1), затем проиндексируйте его, чтобы получить значения для s через e.