2014 dxdy logo

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

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




 
 Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 20:56 
Написал на 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 
Держите список до 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 
Спасибо, совпадают

 
 
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение26.07.2018, 22:08 
Небольшая оптимизация внутреннего цикла — если очередная цифра не является делителем, зачем проверять оставшиеся.
Используется синтаксис 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 
Не знал что так можно, в цикле for использовать составное условие и менять переменную не только прибавляя или отнимая от неё натуральное число на каждом шаге цикла

 
 
 
 Re: Список чисел, делящихся на каждую из своих цифр
Сообщение27.07.2018, 15:27 
В С/С++ цикл for синоним цикла while в более удобной форме записи, особенно удобной если пользоваться оператором continue (при этом не нужны кучи if()goto внутри while для обхода оставшегося кода).

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group