Программа, которую я пытаюсь создать, должна печатать, является ли число, отсканированное с клавиатуры, простым или нет. Программа должна использовать рекурсивную функцию для определения, является ли число простым или нет. Программа, которую я создал, не имеет проблем с компиляцией. Однако, когда функция main () вызывает функцию для определения, является ли число простым или нет (я назвал эту функцию простой), кажется, что возвращается целое число, отсканированное с клавиатуры, всегда простое. Это касается как простых, так и не простых чисел. Созданная мною программа выглядит следующим образом:
#include <stdio.h>
//function for determining whether a number is prime or not
int isprime(int i, int n){
i = 2;
if(n > 1){
/* i = 2, i is the divisor that checks whether n (the number
being checked for being prime) is in fact prime */
if(n % i == 0){
return 1;
}
/* recursive step that returns function with increased value
of i */
isprime(i + 1, n);
}
else {
return 0;
}
return -1;
}
int main(){
int x;
//scans integer from the keyboard
scanf("%d", &x);
//calls recursive function
if(isprime(2, x) == 1){
printf("%d is prime\n", x);
}
if(isprime(2, x) == 0){
printf("%d is not prime\n", x);
}
return 0;
}
Последний вопрос: вызывает ли рекурсивная функция, как в моей программе:
isprime(2, x)
правильный синтаксис для использования? Правильно ли вставить число 2 непосредственно в аргумент функции?
Любая помощь приветствуется! :) 1009 *