Имя: Пароль:
1C
1С v8
Простые числа, структура
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.: Никит, не суди строго! =)