-
-
Notifications
You must be signed in to change notification settings - Fork 46.9k
Created problem_35 in project_euler #2309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 10 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
f59b677
Create __init__.py
Kush1101 791d220
Update __init__.py
Kush1101 ebadae5
Add files via upload
Kush1101 dea8fe5
Update sol1.py
Kush1101 c983a9c
Update sol1.py to include type hints
Kush1101 98c2a4e
Update CONTRIBUTING.md to fix typo
Kush1101 2a3f796
Update CONTRIBUTING.md
Kush1101 06ab574
Update project_euler/problem_35/sol1.py
Kush1101 21e0d13
Update project_euler/problem_35/sol1.py
Kush1101 2739862
Update project_euler/problem_35/sol1.py
Kush1101 3bc2f90
Update project_euler/problem_35/sol1.py
Kush1101 2ff80b5
Update project_euler/problem_35/sol1.py
Kush1101 40f2113
Update project_euler/problem_35/sol1.py
Kush1101 a081270
Update project_euler/problem_35/sol1.py
Kush1101 2cdf28e
Update sol1.py
Kush1101 fc82e52
Update sol1.py
cclauss 82ef081
Update sol1.py
Kush1101 0930fd4
Fix the print(f"string")
cclauss File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
""" | ||
The number 197 is called a circular prime because all rotations of the digits: | ||
|
||
197, 971, and 719, are themselves prime. | ||
|
||
There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, | ||
|
||
Kush1101 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
79, and 97. | ||
|
||
How many circular primes are there below one million? | ||
""" | ||
|
||
""" | ||
To solve this problem in an efficient manner, we will first mark all the primes | ||
below 1 million using the Seive of Eratosthenes. | ||
|
||
Then, out of all the primes, we will rule out the numbers which contain an even | ||
digit. | ||
|
||
After this we will generate each circular combination of the number and check | ||
if all are prime. | ||
""" | ||
|
||
seive = [True] * 1000001 | ||
i = 2 | ||
while i * i <= 1000000: | ||
if seive[i]: | ||
for j in range(i * i, 1000001, i): | ||
seive[j] = False | ||
i += 1 | ||
|
||
|
||
def is_prime(n: int) -> bool: | ||
""" | ||
Returns True if n is prime, | ||
False otherwise, for 2<=n<=1000000 | ||
>>> is_prime(87) | ||
False | ||
>>> is_prime(23) | ||
True | ||
>>> is_prime(25363) | ||
False | ||
""" | ||
return seive[n] | ||
|
||
|
||
def even_digit(n: int) -> bool: | ||
""" | ||
Returns True if n contains an even digit | ||
otherwise False | ||
>>> even_digit(0) | ||
True | ||
>>> even_digit(975317933) | ||
False | ||
>>> even_digit(-245679) | ||
True | ||
""" | ||
digits = "02468" | ||
for i in digits: | ||
if i in str(n): | ||
return True | ||
return False | ||
Kush1101 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
|
||
def find_circular_primes(limit: int=1000000) -> int: | ||
""" | ||
Returns the total count of all numbers | ||
below 1 million, which are circular primes | ||
>>> compute() | ||
55 | ||
""" | ||
limit = 1000000 | ||
Kush1101 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
count = 1 # count already includes the number 2. | ||
for num in range(3, limit + 1, 2): | ||
if is_prime(num) and not even_digit(num): | ||
str_num = str(num) | ||
list_nums = [int(str_num[j:] + str_num[:j]) for j in range(len(str_num))] | ||
if all(list(map(is_prime, list_nums))): | ||
Kush1101 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
count += 1 | ||
return count | ||
|
||
|
||
if __name__ == "__main__": | ||
print(compute()) | ||
Kush1101 marked this conversation as resolved.
Show resolved
Hide resolved
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.