先週25度の夏日を記録していながら今朝は2度
こんな日はこたつの中で温かいプログラミングなどいかがでしょう。
今回は素数プログラムを1行で料理してみたいと思います。
まずは材料のご紹介からです。
(1)材料
数列 2〜100まで 100g
数列 2〜100まで2からその数までのレンジ 少々
こんな感じのものをご用意いたしました。
print([i for i in range(2,100)])
print([range(2,i) for i in range(2,100)])
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
[range(2, 2), range(2, 3), range(2, 4), range(2, 5), range(2, 6), range(2, 7), range(2, 8), range(2, 9), range(2, 10), range(2, 11), range(2, 12), range(2, 13), range(2, 14), range(2, 15), range(2, 16), range(2, 17), range(2, 18), range(2, 19), range(2, 20), range(2, 21), range(2, 22), range(2, 23), range(2, 24), range(2, 25), range(2, 26), range(2, 27), range(2, 28), range(2, 29), range(2, 30), range(2, 31), range(2, 32), range(2, 33), range(2, 34), range(2, 35), range(2, 36), range(2, 37), range(2, 38), range(2, 39), range(2, 40), range(2, 41), range(2, 42), range(2, 43), range(2, 44), range(2, 45), range(2, 46), range(2, 47), range(2, 48), range(2, 49), range(2, 50), range(2, 51), range(2, 52), range(2, 53), range(2, 54), range(2, 55), range(2, 56), range(2, 57), range(2, 58), range(2, 59), range(2, 60), range(2, 61), range(2, 62), range(2, 63), range(2, 64), range(2, 65), range(2, 66), range(2, 67), range(2, 68), range(2, 69), range(2, 70), range(2, 71), range(2, 72), range(2, 73), range(2, 74)...
(2)まず材料をジップに入れてなじませます
print( [(n,a) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
[(2, range(2, 2)), (3, range(2, 3)), (4, range(2, 4)), (5, range(2, 5)), (6, range(2, 6)), (7, range(2, 7)), (8, range(2, 8)), (9, range(2, 9)), (10, range(2, 10)), (11, range(2, 11)), (12, range(2, 12)), (13, range(2, 13)), (14, range(2, 14)), (15, range(2, 15)), (16, range(2, 16)), (17, range(2, 17)), (18, range(2, 18)), (19, range(2, 19)), (20, range(2, 20)), (21, range(2, 21)), (22, range(2, 22)), (23, range(2, 23)), (24, range(2, 24)), (25, range(2, 25)), (26, range(2, 26)), (27, range(2, 27)), (28, range(2, 28)), (29, range(2, 29)), (30, range(2, 30)), (31, range(2, 31)), (32, range(2, 32)), (33, range(2, 33)), (34, range(2, 34)), (35, range(2, 35)), (36, range(2, 36)), (37, range(2, 37)), (38, range(2, 38)), (39, range(2, 39)), (40, range(2, 40)), (41, range(2, 41)), (42, range(2, 42)), (43, range(2, 43)), (44, range(2, 44)), (45, range(2, 45)), (46, range(2, 46)), (47, range(2, 47)), (48, range(2, 48)), (49, range(2, 49)), (50, range(2, 50)), (51, range(2, 51)), (52, range(2, 52)), (53, range(2, 53)), (54, range(2, 54)), (55, range(2, 55)), (56, range(2, 56)), (57, range(2, 57)), (58, range(2, 58)), (59, range(2, 59)), (60, range(2, 60)), (61, range(2, 61)), (62, range(2, 62)), (63, range(2, 63)), (64, range(2, 64)), (65, range(2, 65)), (66, range(2, 66)), (67, range(2, 67)), (68, range(2, 68)), (69, range(2, 69)), (70, range(2, 70)), (71, range(2, 71)), (72, range(2, 72)), (73, range(2, 73)), (74, range(2, 74)), (75, range(2, 75)), (76, range(2, 76)), (77, range(2, 77)), (78, range(2, 78)), (79, range(2, 79)), (80, range(2, 80)), (81, range(2, 81)), (82, range(2, 82)), (83, range(2, 83)), (84, range(2, 84)), (85, range(2, 85)), (86, range(2, 86)), (87, range(2, 87)), (88, range(2, 88)), (89, range(2, 89)), (90, range(2, 90)), (91, range(2, 91)), (92, range(2, 92)), (93, range(2, 93)), (94, range(2, 94)), (95, range(2, 95)), (96, range(2, 96)), (97, range(2, 97)), (98, range(2, 98)), (99, range(2, 99))]
(3)なべに火を入れ素数を一気に抽出します。
print( [ sum(1 for k in a if n%k==0) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
0のものを素数に仕上げていきます。
[0, 0, 1, 0, 2, 0, 2, 1, 2, 0, 4, 0, 2, 2, 3, 0, 4, 0, 4, 2, 2, 0, 6, 1, 2, 2, 4, 0, 6, 0, 4, 2, 2, 2, 7, 0, 2, 2, 6, 0, 6, 0, 4, 4, 2, 0, 8, 1, 4, 2, 4, 0, 6, 2, 6, 2, 2, 0, 10, 0, 2, 4, 5, 2, 6, 0, 4, 2, 6, 0, 10, 0, 2, 4, 4, 2, 6, 0, 8, 3, 2, 0, 10, 2, 2, 2, 6, 0, 10, 2, 4, 2, 2, 2, 10, 0, 4, 4]
(4)素数がだんだんできてきました。この時点ではまだあくが残っているのですくっていきます。
print( [ str(n)*(1-sum(1 for k in a if n%k==0)) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
['2', '3', '', '5', '', '7', '', '', '', '11', '', '13', '', '', '', '17', '', '19', '', '', '', '23', '', '', '', '', '', '29', '', '31', '', '', '', '', '', '37', '', '', '', '41', '', '43', '', '', '', '47', '', '', '', '', '', '53', '', '', '', '', '', '59', '', '61', '', '', '', '', '', '67', '', '', '', '71', '', '73', '', '', '', '', '', '79', '', '', '', '83', '', '', '', '', '', '89', '', '', '', '', '', '', '', '97', '', '']
(5)あくを取るために丁寧に裏ごししてください。
print( [ n for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)]) if sum(1 for k in a if n%k==0)==0 ])
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
(6)最後に盛り付けです。外側のかわを取って完成です。
print(", ".join([str(n) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)]) if sum(1 for k in a if n%k==0)==0 ]))
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
間違ったオーダーで調理すると残念、不正解になりますのでご注意ください。
挑戦してみればできると思いますので、ぜひトライしてみてください。
こんな日はこたつの中で温かいプログラミングなどいかがでしょう。
今回は素数プログラムを1行で料理してみたいと思います。
まずは材料のご紹介からです。
(1)材料
数列 2〜100まで 100g
数列 2〜100まで2からその数までのレンジ 少々
こんな感じのものをご用意いたしました。
print([i for i in range(2,100)])
print([range(2,i) for i in range(2,100)])
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
[range(2, 2), range(2, 3), range(2, 4), range(2, 5), range(2, 6), range(2, 7), range(2, 8), range(2, 9), range(2, 10), range(2, 11), range(2, 12), range(2, 13), range(2, 14), range(2, 15), range(2, 16), range(2, 17), range(2, 18), range(2, 19), range(2, 20), range(2, 21), range(2, 22), range(2, 23), range(2, 24), range(2, 25), range(2, 26), range(2, 27), range(2, 28), range(2, 29), range(2, 30), range(2, 31), range(2, 32), range(2, 33), range(2, 34), range(2, 35), range(2, 36), range(2, 37), range(2, 38), range(2, 39), range(2, 40), range(2, 41), range(2, 42), range(2, 43), range(2, 44), range(2, 45), range(2, 46), range(2, 47), range(2, 48), range(2, 49), range(2, 50), range(2, 51), range(2, 52), range(2, 53), range(2, 54), range(2, 55), range(2, 56), range(2, 57), range(2, 58), range(2, 59), range(2, 60), range(2, 61), range(2, 62), range(2, 63), range(2, 64), range(2, 65), range(2, 66), range(2, 67), range(2, 68), range(2, 69), range(2, 70), range(2, 71), range(2, 72), range(2, 73), range(2, 74)...
(2)まず材料をジップに入れてなじませます
print( [(n,a) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
[(2, range(2, 2)), (3, range(2, 3)), (4, range(2, 4)), (5, range(2, 5)), (6, range(2, 6)), (7, range(2, 7)), (8, range(2, 8)), (9, range(2, 9)), (10, range(2, 10)), (11, range(2, 11)), (12, range(2, 12)), (13, range(2, 13)), (14, range(2, 14)), (15, range(2, 15)), (16, range(2, 16)), (17, range(2, 17)), (18, range(2, 18)), (19, range(2, 19)), (20, range(2, 20)), (21, range(2, 21)), (22, range(2, 22)), (23, range(2, 23)), (24, range(2, 24)), (25, range(2, 25)), (26, range(2, 26)), (27, range(2, 27)), (28, range(2, 28)), (29, range(2, 29)), (30, range(2, 30)), (31, range(2, 31)), (32, range(2, 32)), (33, range(2, 33)), (34, range(2, 34)), (35, range(2, 35)), (36, range(2, 36)), (37, range(2, 37)), (38, range(2, 38)), (39, range(2, 39)), (40, range(2, 40)), (41, range(2, 41)), (42, range(2, 42)), (43, range(2, 43)), (44, range(2, 44)), (45, range(2, 45)), (46, range(2, 46)), (47, range(2, 47)), (48, range(2, 48)), (49, range(2, 49)), (50, range(2, 50)), (51, range(2, 51)), (52, range(2, 52)), (53, range(2, 53)), (54, range(2, 54)), (55, range(2, 55)), (56, range(2, 56)), (57, range(2, 57)), (58, range(2, 58)), (59, range(2, 59)), (60, range(2, 60)), (61, range(2, 61)), (62, range(2, 62)), (63, range(2, 63)), (64, range(2, 64)), (65, range(2, 65)), (66, range(2, 66)), (67, range(2, 67)), (68, range(2, 68)), (69, range(2, 69)), (70, range(2, 70)), (71, range(2, 71)), (72, range(2, 72)), (73, range(2, 73)), (74, range(2, 74)), (75, range(2, 75)), (76, range(2, 76)), (77, range(2, 77)), (78, range(2, 78)), (79, range(2, 79)), (80, range(2, 80)), (81, range(2, 81)), (82, range(2, 82)), (83, range(2, 83)), (84, range(2, 84)), (85, range(2, 85)), (86, range(2, 86)), (87, range(2, 87)), (88, range(2, 88)), (89, range(2, 89)), (90, range(2, 90)), (91, range(2, 91)), (92, range(2, 92)), (93, range(2, 93)), (94, range(2, 94)), (95, range(2, 95)), (96, range(2, 96)), (97, range(2, 97)), (98, range(2, 98)), (99, range(2, 99))]
(3)なべに火を入れ素数を一気に抽出します。
print( [ sum(1 for k in a if n%k==0) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
0のものを素数に仕上げていきます。
[0, 0, 1, 0, 2, 0, 2, 1, 2, 0, 4, 0, 2, 2, 3, 0, 4, 0, 4, 2, 2, 0, 6, 1, 2, 2, 4, 0, 6, 0, 4, 2, 2, 2, 7, 0, 2, 2, 6, 0, 6, 0, 4, 4, 2, 0, 8, 1, 4, 2, 4, 0, 6, 2, 6, 2, 2, 0, 10, 0, 2, 4, 5, 2, 6, 0, 4, 2, 6, 0, 10, 0, 2, 4, 4, 2, 6, 0, 8, 3, 2, 0, 10, 2, 2, 2, 6, 0, 10, 2, 4, 2, 2, 2, 10, 0, 4, 4]
(4)素数がだんだんできてきました。この時点ではまだあくが残っているのですくっていきます。
print( [ str(n)*(1-sum(1 for k in a if n%k==0)) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)] )])
['2', '3', '', '5', '', '7', '', '', '', '11', '', '13', '', '', '', '17', '', '19', '', '', '', '23', '', '', '', '', '', '29', '', '31', '', '', '', '', '', '37', '', '', '', '41', '', '43', '', '', '', '47', '', '', '', '', '', '53', '', '', '', '', '', '59', '', '61', '', '', '', '', '', '67', '', '', '', '71', '', '73', '', '', '', '', '', '79', '', '', '', '83', '', '', '', '', '', '89', '', '', '', '', '', '', '', '97', '', '']
(5)あくを取るために丁寧に裏ごししてください。
print( [ n for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)]) if sum(1 for k in a if n%k==0)==0 ])
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
(6)最後に盛り付けです。外側のかわを取って完成です。
print(", ".join([str(n) for n,a in zip( [i for i in range(2,100)], [range(2,j) for j in range(2,100)]) if sum(1 for k in a if n%k==0)==0 ]))
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
間違ったオーダーで調理すると残念、不正解になりますのでご注意ください。
挑戦してみればできると思いますので、ぜひトライしてみてください。