|
Простые числа, структура | ☑ | ||
---|---|---|---|---|
0
Hennessy
22.01.14
✎
16:07
|
Помогите решить задачу.
В модуле управляемого приложения создайте структуру «Числа». Ключом структуры является слово «Число» и числовое значение (например, «Число392»), а значением соответствующий одно из слов – "Простое", "Не простое". Заполните структуру для диапазона чисел от 1 до 1000. Напомню, что простым числом является то, которое нацело делится на само себя и на 1. Я создал структуру: Процедура Структура() Экспорт Стр = Новый Структура; Счетчик=0; Пока Счетчик<1000 Цикл Счетчик=Счетчик+1; Стр.Вставить("Число"+формат(Счетчик,"ЧГ=")); КонецЦикла; КонецПроцедуры Теперь мне надо создать значения! Но я не могу создать алгоритм простых чисел! |
|||
1
sda553
22.01.14
✎
16:09
|
||||
2
Irbis
22.01.14
✎
16:10
|
ЕМНИП, нет ещё алгритма формирования простого числа.
|
|||
3
Wobland
22.01.14
✎
16:11
|
(0) задача ясна. какие мысли?
|
|||
4
Господин ПЖ
22.01.14
✎
16:12
|
бруталфорсно - сиди и дели на все предыдущие...
|
|||
5
Defender aka LINN
22.01.14
✎
16:12
|
(0) "От 1 до 1000" - это не совсем то же самое, что "От 1 до 999", как у тебя.
*вооружился попкорном* |
|||
6
H A D G E H O G s
22.01.14
✎
16:12
|
||||
7
Avganec
22.01.14
✎
16:13
|
(2) в очень грубом виде есть что-то подобное есть, но там столько математики, что проще стандартными методами - мозг живее будет
|
|||
8
Господин ПЖ
22.01.14
✎
16:13
|
||||
9
Господин ПЖ
22.01.14
✎
16:14
|
(5) бугага
|
|||
10
Йохохо
22.01.14
✎
16:15
|
(5) это оптимизация
|
|||
11
Wobland
22.01.14
✎
16:15
|
(5) там будет ещё один проход после КонецЦикла
|
|||
12
Господин ПЖ
22.01.14
✎
16:15
|
(5) садись, два
|
|||
13
Wobland
22.01.14
✎
16:17
|
(12) ничо, что он инкрементацию делает в первой же строке цикла?
|
|||
14
Laerys
22.01.14
✎
16:18
|
(13) в любом случае не 1-999)
|
|||
15
Irbis
22.01.14
✎
16:18
|
(13) Все равно извращенец
|
|||
16
Господин ПЖ
22.01.14
✎
16:19
|
(13) люди, завязывайте с веществами...
|
|||
17
sda553
22.01.14
✎
16:20
|
Кто напишет код 1С решающий поставленную задачу - тот редиска
|
|||
18
Господин ПЖ
22.01.14
✎
16:20
|
уже цикл простейший в мозгу прокрутить не могут...
|
|||
19
МойКодУныл
22.01.14
✎
16:20
|
wiki:Список_простых_чисел
просто загрузи и не парься. Все лдавно расчитано. |
|||
20
Господин ПЖ
22.01.14
✎
16:21
|
я предлагаю идти по пути (4)... если X%Y дает 0 - выпиливаем из простых
нам эти решеты не указ |
|||
21
sda553
22.01.14
✎
16:22
|
(19) О точняк, напиши код загрузки с сайта wiki:Список_простых_чисел
потом парсер этой таблицы и заполняй |
|||
22
GANR
22.01.14
✎
16:23
|
(0) Это же проще пареной репы http://ru.wikipedia.org/wiki/Решето_Эратосфена
|
|||
23
sda553
22.01.14
✎
16:24
|
(22) Отстань, мы не ищем простых путей
|
|||
24
Laerys
22.01.14
✎
16:25
|
ждем от автора тест агравала—каяла—саксены в реализации 1с на рекурсивных функциях
|
|||
25
GANR
22.01.14
✎
16:25
|
(23) Да уж, математиков среди программистов 1С - по пальцам одной руки пересчитать на всю Россию.
|
|||
26
Irbis
22.01.14
✎
16:26
|
(25) Зачем в 1С математики. Это язык для автоматизаци бреда клиентов.
|
|||
27
Wobland
22.01.14
✎
16:28
|
(24) про вещества уже говорили? ;)
|
|||
28
sda553
22.01.14
✎
16:29
|
(24) А может ТС и есть Агравал или Каял (а может даже и сам Саксена). Просто он 1С не знает
|
|||
29
Asmody
22.01.14
✎
16:33
|
||||
30
МойКодУныл
22.01.14
✎
16:35
|
(23) Тогда КОД:
Короче не напишите. Для Сч=1 По 1000 Цикл Ответ = Вопрос(Строка(Сч) + " простое число?", РежимДиалогаВопрос.ДаНет); Стр["Число" + Строка(Сч)] = (Ответ = КодВозвратаДиалога.Да); КонецЦикла; |
|||
31
Wobland
22.01.14
✎
16:38
|
(30) на тысяче поломаешься ;)
|
|||
32
Asmody
22.01.14
✎
16:39
|
да там простых чисел всего несколько десятков будет. захардкодить и дело с концом! и работать быстро будет
|
|||
33
Йохохо
22.01.14
✎
16:41
|
(30) 4+ "соответствующий одно из слов – "Простое", "Не простое"
|
|||
34
МойКодУныл
22.01.14
✎
16:41
|
(31) не было времени проверить, до 500 дошел, потом сдался:))),
хотя 1000 у него в структуре должна быть. |
|||
35
Жан Пердежон
22.01.14
✎
16:42
|
зачем оболтусу помогаем тестовое задание написать?
пусть сам думает |
|||
36
zva
22.01.14
✎
16:45
|
"Напомню, что простым числом является то, которое нацело делится на само себя и на 1."
По этому определению и 1 - простое число |
|||
37
Irbis
22.01.14
✎
16:46
|
(36) Два должно быть делителя
|
|||
38
zva
22.01.14
✎
16:48
|
(37) в (0) другое определение
поэтому любое целое число нацело делится на себя и на 1, так что просто в цикле заполнить |
|||
39
Мэс33
22.01.14
✎
16:50
|
интересно
потом код выложите? |
|||
40
Franchiser
гуру
22.01.14
✎
16:51
|
А че в цикле нельзя сделать? например число 13.
ччч = 13; Пока истина цикл если ччч%(ччч-1)=0 и ччч>1 тогда Этопростое= Истина; иначе Этопростое = ложь; КонецЕсли; конеццикла; |
|||
41
Franchiser
гуру
22.01.14
✎
16:52
|
еще там прервать; в цикле надо
|
|||
42
hhhh
22.01.14
✎
16:54
|
(40) ччч%(ччч-1)=0 - ответ 2.
|
|||
43
Infsams654
22.01.14
✎
16:54
|
На 1С решил посчитать
http://otvet.mail.ru/question/14474644 |
|||
44
Ненавижу 1С
гуру
22.01.14
✎
16:56
|
лучше решите Можно ли подобрать рациональные числа? чем ерундой маяться
|
|||
45
Franchiser
гуру
22.01.14
✎
16:56
|
(42) в смысле?
|
|||
46
Irbis
22.01.14
✎
16:58
|
(44) А чем твоя ерунда лучше этой?
|
|||
47
hhhh
22.01.14
✎
16:58
|
(45) у вас получится только одно число простое - это 2. ВСе остальные сложные
|
|||
48
Infsams654
22.01.14
✎
16:59
|
(44) теорема Ферма не в зачет
|
|||
49
Franchiser
гуру
22.01.14
✎
17:00
|
(45) простые числа это 1, 3,5, 7, 13 и т д. сначала цикл по всем числам то есть ччч=1,2,3,4,5,6,7 а в цикле проверять внутри еще
|
|||
50
Laerys
22.01.14
✎
17:02
|
(44) Картинку ждем, после нее все должно стать очевидно)
|
|||
51
GANR
22.01.14
✎
17:04
|
(26) Я считаю, что без знания таких аппаратов, как графы, деревья и комбинаторика ни один более-менее серьезный и универсальный софт типа самой платформы 1С, эксель, проджект или еще что-то просто невозможен хоть на 1С, хоть на C#, хоть на ассемблере. Элементарно, к примеру, проверить нет ли зацикливания иерархии справочника или не зациклены ли виды расчета по зависимостям, или попробуйте проверить ссылочную целостность перед удалением помеченных. А? Многие такое осилят?
|
|||
52
Franchiser
гуру
22.01.14
✎
17:05
|
+(49) и 2 тоже наверное простое
|
|||
53
Laerys
22.01.14
✎
17:07
|
(52) Тогда уж и 11...
|
|||
54
Ненавижу 1С
гуру
22.01.14
✎
17:07
|
(49) 1 не простое число
|
|||
55
hhhh
22.01.14
✎
17:09
|
(3) ну берем ччч = 3 ТОгда
если ччч%(ччч-1)=0 и ччч>1 ложь, то есть число 3 у вас не простое. |
|||
56
Franchiser
гуру
22.01.14
✎
17:12
|
(55)Давая с 1 до 9 брать не будем, там исключения всякие)))
|
|||
57
Franchiser
гуру
22.01.14
✎
17:14
|
Для сч=10 по 1000
ччч = сч; запч= сч-1; Пока истина цикл если ччч%(запч)=0 и ччч>10 тогда Этопростое= Истина; прервать; иначе Этопростое = ложь; КонецЕсли; запч= ччч-1; конеццикла; конеццикла; |
|||
58
hhhh
22.01.14
✎
17:15
|
(56) ну реально это фантастика, любые числа возьми, 13 разве может поделиться на 12? Или 100 на 99? Ни не бывает такого.
|
|||
59
Franchiser
гуру
22.01.14
✎
17:16
|
(58) а кто говорит о делении Оператор % считает остаток от деления 13%12 = 1 т.к. остаток от деления 1
|
|||
60
Franchiser
гуру
22.01.14
✎
17:18
|
13/12 = 1 1/12 так может понятнее
|
|||
61
sda553
22.01.14
✎
17:48
|
Стр = Новый Структура;
Счетчик=0; Пока Счетчик<1000 Цикл Счетчик=Счетчик+1; Стр.Вставить("Число"+формат(Счетчик,"ЧГ="),"Простое"); КонецЦикла; П=2; Пока П<=500 Цикл Счетчик=П; Пока (Счетчик+П)<=1000 Цикл Счетчик = Счетчик+П; Стр["Число"+формат(Счетчик,"ЧГ=")]="Не простое"; КонецЦикла; П=П+1; КонецЦикла; Стр["Число1"]="Не простое"; |
|||
62
Господин ПЖ
22.01.14
✎
17:52
|
Если ТекущийПользователь.Пол = Перечисления.ПолФизЛиц.Мужской Тогда
ВсеЧтоМеньшеИРавноПростыеЧисла = 21; Иначе ВсеЧтоМеньшеИРавноПростыеЧисла = 20; КонецЕсли; |
|||
63
Speshuric
22.01.14
✎
17:53
|
(61) До 500 не надо 1000 проверять. Достаточно проверять 2,3,5,7,11,13,17,19,23,29,31. Потому что если x составное, то хоть один множитель меньше квадратного корня
|
|||
64
Franchiser
гуру
22.01.14
✎
17:55
|
еще вариант
для сч=1 по 1000 цикл если сч=1 тогда сообщить("простое"); иначеесли сч=2 тогда сообщить("простое"); ... иначеесли сч=1000 тогда сообщить("не простое"); конецесли; конецикла; |
|||
65
Classic
22.01.14
✎
18:19
|
Для Сч = 1 По 1000 Цикл
Простое = Истина; Сч1 = 2; Пока Сч1*Сч1 <= Сч Цикл Если Сч%Сч1 = 0 Тогда Простое = Ложь; Прервать; КонецЕсли; Сч = Сч + 1; КонецЦикла; Структ.Вставить("Число" + Сч,?(Простое,"Простое","Непростое"); КонецЦикла; |
|||
66
Classic
22.01.14
✎
18:19
|
С тебя сто баксов. Или 10% с каждого оплаченого заказа
|
|||
67
Господин ПЖ
22.01.14
✎
18:21
|
(66) где решето???
|
|||
68
Classic
22.01.14
✎
18:21
|
(67)
Зачем? |
|||
69
Classic
22.01.14
✎
18:22
|
Решето потянет на 200
|
|||
70
Classic
22.01.14
✎
18:28
|
Структ = Новый Структура;
Для Сч = 1 По 1000 Цикл Структ.Вставить("Число" + Сч, "Простое"); КонецЦикла; Р = 2; ФлагВыхода = Ложь; Пока НЕ ФлагВыхода Цикл Сч = Р; Пока Сч <= 1000 Цикл Стукт.Вставить("Число" + Сч, "Непростое"); Сч = Сч + Р; КонецЦикла; Для Сч = Р+1 По Цикл Если Структ["Число" + Сч] = "Простое" Тогда Прервать; КонецЕсли; ФлагВыхода = Истина; КонецЦикла; Р = Сч; КонецЦикла; |
|||
71
Classic
22.01.14
✎
18:32
|
Сч = Р поменять на Сч = Р*Р
|
|||
72
Hennessy
23.01.14
✎
15:42
|
(70) Спасибо! очень помогло! осталось только доработать
|
|||
73
Hennessy
27.01.14
✎
07:57
|
P.S.: Никит, не суди строго! =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |