Euler 070 partial replacement of numpy loops. (#9055)

* Euler 070 partial replacement of numpy loops.

* Update project_euler/problem_070/sol1.py

* project_euler.yml: Upgrade actions/checkout@v4 and add numpy

* Update project_euler.yml

---------

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
Kamil 2023-09-11 15:11:22 +05:00 committed by GitHub
parent 5a5ca06944
commit 97e2de0763
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 11 deletions

View File

@ -14,26 +14,26 @@ jobs:
project-euler: project-euler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: 3.x python-version: 3.x
- name: Install pytest and pytest-cov - name: Install pytest and pytest-cov
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
python -m pip install --upgrade pytest pytest-cov python -m pip install --upgrade numpy pytest pytest-cov
- run: pytest --doctest-modules --cov-report=term-missing:skip-covered --cov=project_euler/ project_euler/ - run: pytest --doctest-modules --cov-report=term-missing:skip-covered --cov=project_euler/ project_euler/
validate-solutions: validate-solutions:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: 3.x python-version: 3.x
- name: Install pytest and requests - name: Install pytest and requests
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
python -m pip install --upgrade pytest requests python -m pip install --upgrade numpy pytest requests
- run: pytest scripts/validate_solutions.py - run: pytest scripts/validate_solutions.py
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -30,6 +30,8 @@ https://en.wikipedia.org/wiki/Euler's_totient_function#Euler's_product_formula
""" """
from __future__ import annotations from __future__ import annotations
import numpy as np
def get_totients(max_one: int) -> list[int]: def get_totients(max_one: int) -> list[int]:
""" """
@ -42,17 +44,14 @@ def get_totients(max_one: int) -> list[int]:
>>> get_totients(10) >>> get_totients(10)
[0, 1, 1, 2, 2, 4, 2, 6, 4, 6] [0, 1, 1, 2, 2, 4, 2, 6, 4, 6]
""" """
totients = [0] * max_one totients = np.arange(max_one)
for i in range(max_one):
totients[i] = i
for i in range(2, max_one): for i in range(2, max_one):
if totients[i] == i: if totients[i] == i:
for j in range(i, max_one, i): x = np.arange(i, max_one, i) # array of indexes to select
totients[j] -= totients[j] // i totients[x] -= totients[x] // i
return totients return totients.tolist()
def has_same_digits(num1: int, num2: int) -> bool: def has_same_digits(num1: int, num2: int) -> bool: