2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 20:56 


16/10/14

667
Написал на C программу, выводящую список натуральных чисел не превосходящих N, делящихся на каждую из своих цифр, но не смог найти эталонного списка чтобы сравнить с ним мой. Сама программа вот:

код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include <stdio.h>
int main()
{
        int N, i, a, b, c;     
        printf("Enter natural N: ");
        scanf("%d", &N);
        for(i=1; i<=N; i++)
        {
                a=0;
                b=0;
                c=i;
                while(c>0)
                {
                        if ((c%10)!=0 && i%(c%10)==0) a++;
                        c=c/10;
                        b++;
                }
                if (a==b) printf("%8d", i);
        }              
        return 0;
}
 


Верно ли моя программа составляет список?

 Профиль  
                  
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 21:17 
Заслуженный участник


20/08/14
11805
Россия, Москва
Держите список до 1000 для проверки (и код PARI/GP):
Код:
? for(n=1,1000,d=vecsort(digits(n),,8);k=#d;if(d[1]>0,for(i=1,#d,if(n%d[i]>0,break,k--)));if(k==0,print1(n," ")))
1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128 132 135 144 155 162 168 175 184 212 216 222 224 244 248 264 288 312 315 324 333 336 366 384 396 412 424 432 444 448 488 515 555 612 624 636 648 666 672 728 735 777 784 816 824 848 864 888 936 999

 Профиль  
                  
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 22:06 


16/10/14

667
Спасибо, совпадают

 Профиль  
                  
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 22:08 


16/06/10
199
Небольшая оптимизация внутреннего цикла — если очередная цифра не является делителем, зачем проверять оставшиеся.
Используется синтаксис C
for(c=i; (c%10)!=0 && i%(c%10)==0; c/=10)
        ;
if (c==0) printf("%8d", i);
 

 Профиль  
                  
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение27.07.2018, 12:59 


16/10/14

667
Не знал что так можно, в цикле for использовать составное условие и менять переменную не только прибавляя или отнимая от неё натуральное число на каждом шаге цикла

 Профиль  
                  
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение27.07.2018, 15:27 
Заслуженный участник


20/08/14
11805
Россия, Москва
В С/С++ цикл for синоним цикла while в более удобной форме записи, особенно удобной если пользоваться оператором continue (при этом не нужны кучи if()goto внутри while для обхода оставшегося кода).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group