File tree Expand file tree Collapse file tree 1 file changed +19
-10
lines changed
chapter-06/recipe-03/cxx-example Expand file tree Collapse file tree 1 file changed +19
-10
lines changed Original file line number Diff line number Diff line change 2
2
Generates C++ vector of prime numbers up to max_number
3
3
using sieve of Eratosthenes.
4
4
"""
5
+ import pathlib
5
6
import sys
6
7
7
8
# for simplicity we do not verify argument list
8
9
max_number = int (sys .argv [- 2 ])
9
- output_file_name = sys .argv [- 1 ]
10
+ output_file_name = pathlib . Path ( sys .argv [- 1 ])
10
11
11
12
numbers = range (2 , max_number + 1 )
12
13
is_prime = {number : True for number in numbers }
19
20
is_prime [current_position ] = False
20
21
21
22
primes = (number for number in numbers if is_prime [number ])
22
- with open (output_file_name , 'w' ) as f :
23
- f .write ('#pragma once\n ' )
24
- f .write ('#include <vector>\n \n ' )
25
- f .write ('const std::size_t max_number = {0};\n ' .format (max_number ))
26
- f .write ('std::vector<int> & primes() {\n ' )
27
- f .write (' static std::vector<int> primes;\n ' )
28
- for number in primes :
29
- f .write (' primes.push_back({0});\n ' .format (number ))
30
- f .write (' return primes;\n }' )
23
+ code = """#pragma once
24
+
25
+ #include <vector>
26
+
27
+ const std::size_t max_number = {max_number};
28
+
29
+ std::vector<int> & primes() {{
30
+ static std::vector<int> primes;
31
+
32
+ {push_back}
33
+
34
+ return primes;
35
+ }}
36
+ """
37
+ push_back = '\n ' .join ([' primes.push_back({:d});' .format (x ) for x in primes ])
38
+ output_file_name .write_text (
39
+ code .format (max_number = max_number , push_back = push_back ))
You can’t perform that action at this time.
0 commit comments