mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-06 10:31:29 +08:00
[pre-commit.ci] pre-commit autoupdate (#9543)
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.291 → v0.0.292](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.291...v0.0.292) - [github.com/codespell-project/codespell: v2.2.5 → v2.2.6](https://github.com/codespell-project/codespell/compare/v2.2.5...v2.2.6) - [github.com/tox-dev/pyproject-fmt: 1.1.0 → 1.2.0](https://github.com/tox-dev/pyproject-fmt/compare/1.1.0...1.2.0) * updating DIRECTORY.md * Fix typos in test_min_spanning_tree_prim.py * Fix typos * codespell --ignore-words-list=manuel --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com> Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
![66853113+pre-commit-ci[bot]@users.noreply.github.com](/assets/img/avatar_default.png)
committed by
GitHub

parent
60291738d2
commit
895dffb412
@ -11,18 +11,18 @@ There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73
|
||||
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 these primes,
|
||||
we will rule out the numbers which contain an even digit. After this we will
|
||||
below 1 million using the Sieve of Eratosthenes. Then, out of all these 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.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
seive = [True] * 1000001
|
||||
sieve = [True] * 1000001
|
||||
i = 2
|
||||
while i * i <= 1000000:
|
||||
if seive[i]:
|
||||
if sieve[i]:
|
||||
for j in range(i * i, 1000001, i):
|
||||
seive[j] = False
|
||||
sieve[j] = False
|
||||
i += 1
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ def is_prime(n: int) -> bool:
|
||||
>>> is_prime(25363)
|
||||
False
|
||||
"""
|
||||
return seive[n]
|
||||
return sieve[n]
|
||||
|
||||
|
||||
def contains_an_even_digit(n: int) -> bool:
|
||||
|
@ -1,28 +1,22 @@
|
||||
"""
|
||||
Project Euler Problem 135: https://projecteuler.net/problem=135
|
||||
|
||||
Given the positive integers, x, y, and z,
|
||||
are consecutive terms of an arithmetic progression,
|
||||
the least value of the positive integer, n,
|
||||
for which the equation,
|
||||
Given the positive integers, x, y, and z, are consecutive terms of an arithmetic
|
||||
progression, the least value of the positive integer, n, for which the equation,
|
||||
x2 − y2 − z2 = n, has exactly two solutions is n = 27:
|
||||
|
||||
342 − 272 − 202 = 122 − 92 − 62 = 27
|
||||
|
||||
It turns out that n = 1155 is the least value
|
||||
which has exactly ten solutions.
|
||||
It turns out that n = 1155 is the least value which has exactly ten solutions.
|
||||
|
||||
How many values of n less than one million
|
||||
have exactly ten distinct solutions?
|
||||
How many values of n less than one million have exactly ten distinct solutions?
|
||||
|
||||
|
||||
Taking x,y,z of the form a+d,a,a-d respectively,
|
||||
the given equation reduces to a*(4d-a)=n.
|
||||
Calculating no of solutions for every n till 1 million by fixing a
|
||||
,and n must be multiple of a.
|
||||
Total no of steps=n*(1/1+1/2+1/3+1/4..+1/n)
|
||||
,so roughly O(nlogn) time complexity.
|
||||
|
||||
Taking x, y, z of the form a + d, a, a - d respectively, the given equation reduces to
|
||||
a * (4d - a) = n.
|
||||
Calculating no of solutions for every n till 1 million by fixing a, and n must be a
|
||||
multiple of a. Total no of steps = n * (1/1 + 1/2 + 1/3 + 1/4 + ... + 1/n), so roughly
|
||||
O(nlogn) time complexity.
|
||||
"""
|
||||
|
||||
|
||||
@ -42,15 +36,15 @@ def solution(limit: int = 1000000) -> int:
|
||||
for first_term in range(1, limit):
|
||||
for n in range(first_term, limit, first_term):
|
||||
common_difference = first_term + n / first_term
|
||||
if common_difference % 4: # d must be divisble by 4
|
||||
if common_difference % 4: # d must be divisible by 4
|
||||
continue
|
||||
else:
|
||||
common_difference /= 4
|
||||
if (
|
||||
first_term > common_difference
|
||||
and first_term < 4 * common_difference
|
||||
): # since x,y,z are positive integers
|
||||
frequency[n] += 1 # so z>0 and a>d ,also 4d<a
|
||||
): # since x, y, z are positive integers
|
||||
frequency[n] += 1 # so z > 0, a > d and 4d < a
|
||||
|
||||
count = sum(1 for x in frequency[1:limit] if x == 10)
|
||||
|
||||
|
@ -9,7 +9,7 @@ Give your answer with nine digits after the decimal point (a.bcdefghij).
|
||||
|
||||
This combinatorial problem can be solved by decomposing the problem into the
|
||||
following steps:
|
||||
1. Calculate the total number of possible picking cominations
|
||||
1. Calculate the total number of possible picking combinations
|
||||
[combinations := binom_coeff(70, 20)]
|
||||
2. Calculate the number of combinations with one colour missing
|
||||
[missing := binom_coeff(60, 20)]
|
||||
|
Reference in New Issue
Block a user