Другие языки программирования и технологии

Написать программу на языке C, чтобы в нее вводили число, а она говорила простое оно или нет

Я ввожу число х, а программа отвечает простое оно или нет
Илья Лягов
Илья Лягов
144
var
n,p,c:integer;
f:boolean;
begin
c:=1; //признак четности числа членов последовательности
writeln('Вводите члены последовательности');
repeat
readln(n);
if n<>0 then
begin
c:=-c;
if (p*p=n) and (c=1) then f:=true else f:=false;
p:=n;
end;
until n=0;
if f=true then write('Да, верно') else write('Нет, неверно');
end.
Павел Тимченко
Павел Тимченко
0
Лучший ответ
Короче, я давно не писал в Си, поэтому могут быть ошибки в синтаксисе, но я думаю, ты их исправишь, если что, ибо логика важней. Итак, функция, которая возвращает ПРАВДА/НЕПРАВДА о том простое число или нет

bool test(int number){
int tester = 2;
while number%tester != 0 {
tester++;
}
if tester == number && tester !=1{ //
return true;
} else {
return false;
}
}
Когда то в институте делал на паскале. Вот держи, может тебе это поможет.
//Функция определения простого числа по алгоритму Эратосфена
//Входные параметры функции – число, которое нужно проверить
//на простоту. Функция возвращает true, если число простое,
//иначе false.
function simple(I:Integer):Boolean;var J:Integer;
begin
result:=True;
for J:=2 to I-1 do
if I mod J=0 then result:=False;end;
Думаю перевести на СИ труда не составит...
легче использовать потоки чем принты
Хз, по утру приходят в голову топорные коды, но вроде должен работать

bool simple(int n)
{
int counter; //Это счетчик делений без остатка
for(int i=1;i<=n;i++) //пробуем подряд делить на все числа от 1 до самого числа
{
if(n%i==0) counter++; //если остаток равен 0 прибавляем счетчик
//при n=1 возвращаем истину, так как единица делится только на саму себя, счетчик не дойдет //до 2
else if(n==1) return true;
}

//если счетчик дошел только до 2 значит нашлись 2 числа - 1 и само это число, это верно для //всех случаев кроме самой единицы
if(counter==2)
return true;

//ну а если целочисленных делителей больше то вернем ложь
else
return false;
}
Тимур Гарифуллин Черт, забыл counter инициализировать, int counter = 0
Если я правильно понимаю, то:

#include

#include

int Simple ( int N );

//--- основная программа ---

void main()

{

int N;

printf ( "\nВведите целое число ");

scanf ( "%d", &N );

if ( Simple (N) )

printf ( "Число %d - простое\n", N );

else printf ( "Число %d - составное\n", N );

getch();

}

//--- функция ---

int Simple ( int N )

{

for ( int i = 2; i*i <= N; i ++ )

if ( N % i = = 0 ) return 0;

return 1;

}

N - число
Сергей Чижиков а почему в конце return 1??
Никита Тришин Это не решение
Юрий Вялых Для реализации ответа из подпрограммы достаточно сделать функцию bool типа и возвращать true/false экономия памяти.
но не понятна суть вопроса? Найди в инете что такое простое число, и по найденной функции впиши формулу в подпрограмму
А есть непростое число?!
Жандос Жаксыбаев Простое число, это число, которое имеет 2 делителя: себя и единицу.
#include

#include

int Simple ( int N );

//--- основная программа ---

void main()

{

int N;

printf ( "\nВведите целое число ");

scanf ( "%d", &N );

if ( Simple (N) )

printf ( "Число %d - простое\n", N );

else printf ( "Число %d - составное\n", N );

getch();

}

//--- функция ---

int Simple ( int N )

{

for ( int i = 2; i*i <= N; i ++ )

if ( N % i = = 0 ) return 0;

return 1;

}

N - число
е

Похожие вопросы