Найдите 5 чисел больших 500000, таких, что среди их делителей есть число, оканчивающееся на 8, при этом этот делитель не равен 8 и самому числу. В качестве ответа приведите 5 наименьших чисел, соответствующих условию. Формат вывода: для каждого из найденных чисел в отдельной строке запишите само число, а затем минимальный делитель, оканчивающийся на 8, не равный 8 и самому числу.
1 Ответ
Паскаль |
---|
var c, d, i, md: integer;
begin for i := 500000 to 10000000 do begin md := 0; for d := 2 to trunc(sqrt(i)) do if i mod d = 0 then begin if (d mod 10 = 8) and (d <> 8) then begin md := d; break; end; if (i div d) mod 10 = 8 then md := i div d; end; if md > 0 then begin writeln(i, ‘ ‘, md); c := c + 1; if c = 5 then break; end; end; end.
|
Python |
c = 0
for i in range(500000, 10000000): md = 0 for d in range(2, int(i**0.5) + 1): if i % d == 0: if d % 10 == 8 and d != 8: md = d break if (i // d) % 10 == 8: md = i // d if md > 0: print(i, md) c += 1 if c == 5: break
|
С++ |
#include <iostream>
#include <cmath> using namespace std; int main(){ int c = 0; for(long int i=500000; i<10000000; i++){ int md = 0; for(int d = 2; d <= round(sqrt(i)); d++) if(i % d == 0){ if(d != 8 && d % 10 == 8){ md = d; break; } if((i / d) % 10 == 8) md = i / d; } if(md > 0){ std::cout << i << » » << md << std::endl; c = c + 1; if(c == 5) break; } } }
|
В результате работы программа должна вывести следующее:
500002 178
500004 18
500016 48
500018 58
500020 4348