В арифметике n-гладкое число , где n - это заданное простое число, математически определяется как положительное целое число, которое не имеет простых множителей больше, чем n. Например, 42 является 7-гладким, потому что все его простые множители меньше или равны 7, но 44 не является 7-гладким, потому что он также имеет 11 как главный фактор.
Определите довольно гладкое число как число без простых факторов, больших, чем его собственный квадратный корень. Таким образом, список довольно гладких чисел можно сформулировать следующим образом:
- (ИЗМЕНЕНО!) 1 - довольно гладкое число из-за полного отсутствия каких-либо основных факторов. (Обратите внимание, что в исходной версии этого вопроса 1 был ошибочно исключен из списка, поэтому, если вы исключите его из выходных данных, вы не будете помечены неправильно.)
- Между 4 (= 2 2 ) и 8 довольно гладкие числа являются 2-гладкими, что означает, что они имеют 2 в качестве единственного простого множителя.
- Между 9 (= 3 2 ) и 24 довольно гладкие числа являются 3-гладкими и могут иметь 2 и 3 в своих основных факторизациях.
- Между 25 (= 5 2 ) и 48 довольно гладкие числа являются 5-гладкими и могут иметь 2, 3 и 5 в своих основных факторизациях.
- И так далее, обновляя критерии каждый раз, когда достигается квадрат следующего простого числа.
Список довольно гладких чисел фиксирован и начинается следующим образом: 1, 4, 8, 9, 12, 16, 18, 24, 25, ...
Ваша задача - написать код, который будет выводить все довольно гладкие числа вплоть до 10 000 включительно (= 100 2 ). Между каждым числом в списке и следующим должен быть хотя бы один разделитель (не имеет значения, какой это тип - пробел, запятая, новая строка и т. Д.), Но не имеет значения, какой символ используется.
Как обычно, выигрывает наименьшее количество байтов - очевидно, что просто вывод списка не будет слишком полезным для вас. Удачи!
1
)Ответы:
На самом деле, 11 байтов
Попробуйте онлайн!
Не включает 1.
Объяснение:
источник
Желе , 12 байт
Попробуйте онлайн!
Как это устроено
источник
Брахилог ,
2119 байт1 байт, благодаря Fatalize, за вдохновение еще 1 байта.
Попробуйте онлайн!
Занимает около 6 секунд здесь.
Предыдущее 21-байтовое решение
Попробуйте онлайн!
Занимает около 6 секунд здесь.
источник
100^:4reP$pot^<=P@w\
на один байт короче, хотя и менее элегантный.Haskell, 53 байта
Сейчас у меня нет времени играть в гольф, но я хочу проиллюстрировать метод тестирования, если
n
он достаточно плавный: умножить числа с1
наsqrt(n)
(т.е. вычислить факториал), поднять продукт на большую мощность и проверить, если результат является кратнымn
.Измените на,
r=[2..10^4]
если1
не должен выводиться.источник
8
требует этого).Pyth ,
1615 байт1 байт благодаря Якубе.
Попробуйте онлайн!
источник
*dd
эту функцию?05AB1E,
161413 байтобъяснение
Попробуйте онлайн
источник
4°
коротка для 10000.Matlab,
5857565248 байтДля каждого числа проверяется, все ли квадраты не больше, чем само число. Если да, отображает это число.
Спасибо @Luis Mendo за игру в гольф
Другой подход (50 байтов):
Для каждого числа вычисляется, меньше ли его квадрата максимального простого множителя, чем само число. Затем использует его для индексации.
источник
for k=4:1e4,if factor(k).^2<=k,disp(k);end;end
SQF ,
252227220Стандартный формат скрипта:
Включите препроцессор в цепочку компиляции при вызове, например:
execVM "FILENAME.sqf"
call compile preprocessFile "FILENAME.sqf"
Это записывает в журнал системного чата, который SQF ближе всего подходит к stdout
источник
C 113 байтов
Идео это!
источник
Пайк,
131211 байтПопробуй это здесь!
(Ссылка идет только до 10 ^ 3, потому что 10 ^ 4 раза)
источник
J, 20 байт
Результат:
Попробуйте это онлайн здесь.
источник
Python 2, 90 байт
Идео это!
источник
R, 97 байт
ungolfed
источник
Pyth, 12 байт
Не включает 1.
источник