在算术中,n光滑数(其中n是给定的质数)在数学上被定义为不具有大于n的素数的正整数。例如,42是7平滑的,因为它的所有素数都小于或等于7,但是44不是7平滑的,因为它也有11作为素数。
将一个非常平滑的数字定义为没有素数大于其平方根的数字。因此,相当平滑的数字列表可以表述为:
- (已编辑!) 1是一个非常平滑的数字,因为它完全没有任何主要因素。(请注意,在此问题的原始版本中,错误地从列表中排除了1,因此,如果从输出中排除它,则不会被标记为错误。)
- 在4(= 2 2)和8之间,相当平滑的数字是2平滑的,这意味着它们以2为唯一素数。
- 在9(= 3 2)和24之间,相当平滑的数字是3平滑的,并且在素数分解中可以有2s和3s。
- 在25(= 5 2)和48之间,相当平滑的数字是5平滑的,并且在素数分解中可以有2s,3s和5s。
- 依此类推,每次到达下一个质数的平方时就升级标准。
相当平滑的数字列表是固定的,并且从以下开始:1、4、8、9、12、16、18、24、25,...
您的挑战是编写代码,以输出所有非常平滑的数字,包括10,000(= 100 2)。列表中的每个数字与下一个数字之间至少必须有一个分隔符(无论哪种分隔符,空格,逗号,换行符等等),但是使用什么字符完全无关紧要。
像往常一样,最低字节数会获胜-显然,仅输出列表不会对您有太大帮助。祝好运!
1
)