Skip to content

Commit

Permalink
Euler 070 partial replacement of numpy loops. (TheAlgorithms#9055)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
2 people authored and sedatguzelsemme committed Sep 15, 2024
1 parent 1020120 commit b669bd0
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/project_euler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,26 @@ jobs:
project-euler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install pytest and pytest-cov
run: |
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/
validate-solutions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install pytest and requests
run: |
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
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
13 changes: 6 additions & 7 deletions project_euler/problem_070/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
"""
from __future__ import annotations

import numpy as np


def get_totients(max_one: int) -> list[int]:
"""
Expand All @@ -42,17 +44,14 @@ def get_totients(max_one: int) -> list[int]:
>>> get_totients(10)
[0, 1, 1, 2, 2, 4, 2, 6, 4, 6]
"""
totients = [0] * max_one

for i in range(max_one):
totients[i] = i
totients = np.arange(max_one)

for i in range(2, max_one):
if totients[i] == i:
for j in range(i, max_one, i):
totients[j] -= totients[j] // i
x = np.arange(i, max_one, i) # array of indexes to select
totients[x] -= totients[x] // i

return totients
return totients.tolist()


def has_same_digits(num1: int, num2: int) -> bool:
Expand Down

0 comments on commit b669bd0

Please sign in to comment.