
'''simple docstring'''

from itertools import compress, repeat
from math import ceil, sqrt







def 					A       ( UpperCamelCase_   :       int )   ->    list[int]:







			'''simple docstring'''



			if num <= 2:
						return []
			if num == 3:
						return [2]

			# Odd sieve for numbers in range [3, num - 1]
			lowerCAmelCase__									=							bytearray(B"\x01" ) * ((num >> 1) - 1)

			for i in range(3  ,		int(sqrt(UpperCamelCase_ ) ) + 1  ,		2 ):
						if sieve[(i >> 1) - 1]:
									lowerCAmelCase__									=							i**2
									lowerCAmelCase__									=							repeat(
									    0  ,		ceil((num - i_squared) / (i << 1) ) )

			return [2] + list(compress(range(3  ,		UpperCamelCase_  ,		2 )  ,		UpperCamelCase_ ) )


if __name__ == "__main__":
		import doctest

		doctest.testmod()







'''simple docstring'''

# this script builds a small sample spm file tests/fixtures/test_sentencepiece_no_bos.model, with features needed by pegasus

# 1. pip install sentencepiece
#
# 2. wget https://raw.githubusercontent.com/google/sentencepiece/master/data/botchan.txt

# 3. build
import sentencepiece as spm

# pegasus:
# 1. no bos
# 2. eos_id is 1
# 3. unk_id is 2
# build a sample spm file accordingly
spm.SentencePieceTrainer.train(
    "--input=botchan.txt --model_prefix=test_sentencepiece_no_bos --bos_id=-1 --unk_id=2  --eos_id=1  --vocab_size=1000"
)

# 4. now update the fixture
# mv test_sentencepiece_no_bos.model ../../tests/fixtures/





