Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.06.2009
Сообщений: 9
1

Выяснить, является ли число простым

06.07.2009, 06:53. Показов 2905. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выяснить является ли действительное число n простым?
Pascal
1
2
3
4
5
6
7
8
9
10
11
program n_4_13;
uses WinCRT;
var n,i:real;
begin
Write('n=');
Read(n);
i:=1;
repeat i:=i+1 until n mod i = 0;
if n=i then WriteLn(n,' is simple') else
   WriteLn(n,' isn`t simple');
end.
Так код не работает - компилятор указывает на "repeat i:=i+1 until n mod i (!)= 0;". Код здерт с какого-то сайта. Изначальное условие там было "Выяснить является ли число n простым?" и тип переменных integer. С ним все работает хорошо, а вот с real не хочет
Помогите пожалуйста, что нужно сделать/изменить в коде чтоб программа работала?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2009, 06:53
Ответы с готовыми решениями:

Выяснить является ли натуральное число простым
вывести результат проверки

Дано натуральное число выяснить является ли оно простым
Дано натуральное число выяснить является ли оно простым.Оператор цикла с параметром не...

Использование цикла с постусловием. Дано натуральное число. Выяснить, является ли оно простым
Дано натуральное число. Выяснить, является ли оно простым (простым называется натуральное число,...

Является ли число простым?
Задали задачку: Вводится число n. Определить является ли оно простым... Нужен не код задачи(хотя...

27
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 07:00 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
program n_4_13;
uses WinCRT;
var n,i:real;
begin
Write('n=');
Read(n);
i:=1;
repeat
 i:=i+1;
 until (n mod i=0)or(i>=n);
if n=i then WriteLn(n,' is simple') else
   WriteLn(n,' isn`t simple');
end.
вопервых надо ставить точку с запятой где необходимо,а во вторых равно пишется с i без пробела и с нулем тоже, но этот код не эффективен тебу нужно будет его переписать, да и тип надо сменить
1
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 07:02 3
а вот с real не хочет
Вы что, действительно считаете, что вещественные числа бывают простыми и составными???? Вы хоть в Гугле прочитайте что такое простое число.

Добавлено через 1 минуту 29 секунд
var n,i:real;
...............
n mod i = 0
А этому где учат????
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 07:10 4
Puporev, а почему ты считаешь что действительное число не может быть простым??? что ты хочешь сказать что число 3 , например , не относится к действительным числам???
1
0 / 0 / 0
Регистрация: 17.06.2009
Сообщений: 9
06.07.2009, 07:11  [ТС] 5
Я же говорю что код содран! Я не вникал в это сам и особо не думал над может/не может... Совсем меня опозорили Ну ладно, постараюсь сам что-то придумать...
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 07:14 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program n_4_13;
uses WinCRT;
var n,i,k:real;
     l:=boolean;
begin
Write('n=');
Read(n);
i:=1;
l:=false;
repeat
 i:=i+1;
 k:=trunc(n/i);
 if k*i=n then l:=true;
 until (l)or(i>=sqrt(n)+1);
if l then WriteLn(n,' не простое число ') else
   WriteLn(n,' простое ');
end.
не парься просто mod работает только с целыми числами
1
0 / 0 / 0
Регистрация: 17.06.2009
Сообщений: 9
06.07.2009, 07:15  [ТС] 7
mamedovvms, все равно компилятор носом в то же место тычет... Я не знаю что делать :/
0
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 07:17 8
Из Википедии.
Просто́е число́ — это натуральное число, которое имеет ровно 2 различных делителя (только 1 и самого себя).
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 07:19 9
еще раз посмотри, я просто запарился и не изменил

Добавлено через 1 минуту 20 секунд
Puporev, а разве натуральные числа не входят в множество действительных, там все прекрасно показано, что натуральные числа входят в множество действительных
1
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 07:21 10
if k*i=n
При делении или умножении вещественных чисел знак равенства не работает, т.е.
1.0*2.0<>2

Добавлено через 1 минуту 56 секунд
а разве натуральные числа не входят в множество действительных,
Не путайте причинно-следственные связи. Натуральные входят в множество действительных чисел, но множество действительных чисел не входит в множество натуральных чисел.
1
0 / 0 / 0
Регистрация: 17.06.2009
Сообщений: 9
06.07.2009, 07:31  [ТС] 11
Это задание вообще реально выполнить при данном условии?
0
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 07:43 12
Нет, еще раз повторяю, что вещественные числа не могут быть простыми и составными. В программировании нет понятия действительное число, есть стандартные типы чисел, целые byte, integer, word, longint и вещественные real, double, extended, single, comp. Если вы определяете число типа real, для компилятора оно вещественное, его нельзя использовать как порядковое в циклах, к нему неприменимы операторы mod, div.
Проверьте это так.
Pascal
1
2
3
4
5
6
var i:real;
begin
i:=1;
write(i);
readln
end.
Посмотрите какое число Вам выведет на экран.
1
0 / 0 / 0
Регистрация: 17.06.2009
Сообщений: 9
06.07.2009, 07:49  [ТС] 13
Я идиот. Натуральное число задано а не дейстительное Это тип переменной Word?
0
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 07:52 14
В принципе любой целый тип, из перечисленных мной. Типа натуральное число, тоже нет, так как и word и byte начинаются с ноля, а натуральные числа начинаются с 1. Поэтому можно определять любой тип но для корректной работы нужно проверять правильность при вводе, например
Pascal
1
2
3
4
5
6
var n:longint;
begin
repeat
write('n=');
readln(n);
until n>0;
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 08:05 15
Цитата Сообщение от Puporev Посмотреть сообщение
Не путайте причинно-следственные связи. Натуральные входят в множество действительных чисел, но множество действительных чисел не входит в множество натуральных чисел.
ты сам то понял что написал???
Цитата Сообщение от Puporev Посмотреть сообщение
При делении или умножении вещественных чисел знак равенства не работает, т.е.
1.0*2.0<>2
у меня все почему то работает

Добавлено через 2 минуты 55 секунд
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program n_4_13;
uses CRT;
var n,i,k:real;
     l:boolean;
begin
repeat
clrscr;
Write('n=');
Read(n);
until(n>1)and(trunc(n/1)=n);
i:=1;
l:=false;
repeat
 i:=i+1;
 k:=trunc(n/i);
 if k*i=n then l:=true;
 until (l)or(i>=trunc(sqrt(n))+1);
 
if l then WriteLn(n,' net ') else
   WriteLn(n,' простое ');
 readln;
 readln;
end.
вот код попробуй его, он работает, причем для действительных чисел

Добавлено через 3 минуты 22 секунды
Puporev, если в натуральных есть простые, а натуральные принадлежат действительным то значит и в действительных есть простые, те же самые числа что и в натуральных, ты понимаешь что значит множество содержится в множестве???
1
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 09:22 16
По-моему мы говорим на разных языках. Какой смысл вводить натуральное число (а другие Вы и не введете) в формате вещественных чисел и при вводе проверять, чтоб оно было натуральным?
Еще дописать WriteLn(n:0:0,' простое '); и вообще красиво будет.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 09:30 17
но сделать то для реальных можно, просто разные задачи бывают, может так надо сделать будет и что сразу все бросать и говорить что так сделать нельзя???
например в качестве множества реальных чисел возьмем множество всех автомобили, в качестве множества натуральных чисел возьмем автомобили марки Лада, в качестве свойства простоты возьмем цвет например черный, и что ты хочешь сказать что среди всех автомобилей нельзя и не возможно искать черный автомобиль марки Лада????
0
Почетный модератор
64301 / 47596 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2009, 09:35 18
Да конечно, практически все можно. Но зачем так усложнять себе задачу? Если Вы пришли выбирать черную Ладу, то Вы же не будете просматривать автомобили других марок и окрасов. Просто если мы знаем, что данная задача разрешима только в множестве натуральных чисел, то зачем искусственоо его расширять?
Можно говорят и зубы не через рот удалять.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
06.07.2009, 09:58 19
так в том то и дело что если задание такое, когда ты смотришь на машину сначала то тоже определяешь Лада это или нет, а потом смотришь на цвет, но ты же определяешь, если тебе надо увидеть черную ладу, что ты сделаешь так что по городу только лады будут ездить????
0
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
06.07.2009, 10:01 20
Puporev, я не понимаю чем тебе задача не угодила?
Простая задача, где проверяют число.
Действительные числа-алгебраические, рациональные, целые, положительные целые
Вводится число, программа его проверяет.
0
06.07.2009, 10:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2009, 10:01
Помогаю со студенческими работами здесь

Является натуральное число простым?
Является натуральное число простым?

Определить, является ли число простым
Визначити просте чи складне дане число. Скласти програму

Проверьте, является ли число простым
Нужно сделать через рекурсию, заранее спасибо! Дано натуральное число n&gt;1. Проверьте,...

Является ли натуральное число простым?
Напишите программу, которая определяет, является ли натуральное число простым.

Является ли целое число простым ?
Написать программу,которая проверяет для N чисел,является ли целое число, введённым...

Определить является ли число n простым
1. Определить является ли число n простым. 2. Дано множество n точек на плоскости, заданных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru