Я начинаю и изучаю функции. Ниже приведен код, который я написал, чтобы узнать, является ли данное число простым. Но когда я его выполняю, я получаю диалоговое окно с надписью «project.exe перестает работать». Я использую dev C++. любая проблема с моим кодом?Функция поиска, если заданное число является простым
#include<stdio.h>
int prime (int i);
int main()
{
int a,b;
scanf("%d",&a);
b=prime(a);
if (b==1)
printf("prime");
else
printf("not prime");
return 0;
}
int prime (int i)
{
int j=0;
for (j=0;j<=i;j++)
{
if (i%j==0)
break;
}
if (j==i)
return 1;
else
return 0;
}
На первом проходе через цикл 'j',' j' равен нулю. Вы не можете делить на ноль или взять оставшуюся часть такого разделения. Начните цикл с 'j = 2', потому что остаток деления на единицу всегда равен нулю. Аналогично для верхней границы: 'i% j' равно нулю, когда' i == j'. В конце концов, простое число делится на одно и само по себе. –
Кроме того, если ваше условие завершения - 'j <= i',' j' не будет равно «i», если вы пройдете весь цикл, не выйдя из него. Лучше сразу вернуть 0 вместо того, чтобы выходить из цикла. –
Вы должны изменить функцию на 'bool prime (int i)' и вернуть 'true' или' false'. Именование его 'is_prime' вместо этого также может быть хорошей идеей, чтобы указать, что он имеет логический результат. – Lundin