Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
Grupo-Ascanio-Benavides
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Escuela de Fisica
Cursos
Herramientas Computacionales 23
Tareas
Grupo-Ascanio-Benavides
Commits
7bf068dc
Commit
7bf068dc
authored
1 year ago
by
Miguel Stiven Ascanio Quinchia
Browse files
Options
Downloads
Patches
Plain Diff
Números primos (Miguel Ascanio)
parent
f93bcc81
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Num_primos__1_.ipynb
+175
-0
175 additions, 0 deletions
Num_primos__1_.ipynb
with
175 additions
and
0 deletions
Num_primos__1_.ipynb
0 → 100644
+
175
−
0
View file @
7bf068dc
{
"cells": [
{
"cell_type": "markdown",
"id": "bfa85485-9b76-43ac-97cf-6225e214984d",
"metadata": {},
"source": [
"# Numeros primos"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "e5f256cd-f786-42fa-acc6-fd839023e168",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "e9797f5a-68b1-42ee-9e50-3262626fd5d2",
"metadata": {},
"outputs": [],
"source": [
"N = 20\n",
"numeros = np.arange(2, N+1)\n",
"primos = [numeros[0]]\n",
"\n",
"for i in np.arange(1, len(numeros)):\n",
" for j in np.arange(0, i):\n",
" cond = numeros[i]%numeros[j]\n",
" if cond == 0:\n",
" break\n",
" if cond!=0:\n",
" primos.append(numeros[i])"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "4a712079-9eb1-4f10-ba4b-09a57927ca2c",
"metadata": {},
"outputs": [],
"source": [
"def numeros_primos_func(N):\n",
" numeros = np.arange(2, N+1)\n",
" primos = [numeros[0]]\n",
"\n",
" for i in np.arange(1, len(numeros)):\n",
" for j in np.arange(0, i):\n",
" cond = numeros[i]%numeros[j]\n",
" if cond == 0:\n",
" break\n",
" if cond!=0:\n",
" #print(numeros[i])\n",
" primos.append(numeros[i])\n",
" return primos\n",
"\n",
"def contador_primos(N):\n",
" numprim = numeros_primos_func(N)\n",
" return len(numprim)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "68a92cec-dd52-4d68-8c63-b92d7f1ed74e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numeros_primos_func(71)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "a40ace4c-895c-409c-b1d5-265ae33f1fb8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"contador_primos(71)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "8db8f495-627a-416c-ab55-d2a065a48b2d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"mis_numeros = np.arange(2, 1000)\n",
"primos_por_rango = []\n",
"\n",
"for r in mis_numeros:\n",
" cantidad_primos = contador_primos(r)\n",
" primos_por_rango.append(cantidad_primos)\n",
" \n",
"plt.figure(figsize=(20,20))\n",
"plt.plot(mis_numeros, primos_por_rango, \"k.\")\n",
"plt.xlabel('Rango de números')\n",
"plt.ylabel('Cantidad de números primos')\n",
"plt.title('Números primos hasta 1000')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0ec25533-53f7-48be-8c79-a7f946cfc032",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
%% Cell type:markdown id:bfa85485-9b76-43ac-97cf-6225e214984d tags:
# Numeros primos
%% Cell type:code id:e5f256cd-f786-42fa-acc6-fd839023e168 tags:
```
python
import
numpy
as
np
import
matplotlib.pyplot
as
plt
```
%% Cell type:code id:e9797f5a-68b1-42ee-9e50-3262626fd5d2 tags:
```
python
N
=
20
numeros
=
np
.
arange
(
2
,
N
+
1
)
primos
=
[
numeros
[
0
]]
for
i
in
np
.
arange
(
1
,
len
(
numeros
)):
for
j
in
np
.
arange
(
0
,
i
):
cond
=
numeros
[
i
]
%
numeros
[
j
]
if
cond
==
0
:
break
if
cond
!=
0
:
primos
.
append
(
numeros
[
i
])
```
%% Cell type:code id:4a712079-9eb1-4f10-ba4b-09a57927ca2c tags:
```
python
def
numeros_primos_func
(
N
):
numeros
=
np
.
arange
(
2
,
N
+
1
)
primos
=
[
numeros
[
0
]]
for
i
in
np
.
arange
(
1
,
len
(
numeros
)):
for
j
in
np
.
arange
(
0
,
i
):
cond
=
numeros
[
i
]
%
numeros
[
j
]
if
cond
==
0
:
break
if
cond
!=
0
:
#print(numeros[i])
primos
.
append
(
numeros
[
i
])
return
primos
def
contador_primos
(
N
):
numprim
=
numeros_primos_func
(
N
)
return
len
(
numprim
)
```
%% Cell type:code id:68a92cec-dd52-4d68-8c63-b92d7f1ed74e tags:
```
python
numeros_primos_func
(
71
)
```
%% Output
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
%% Cell type:code id:a40ace4c-895c-409c-b1d5-265ae33f1fb8 tags:
```
python
contador_primos
(
71
)
```
%% Output
20
%% Cell type:code id:8db8f495-627a-416c-ab55-d2a065a48b2d tags:
```
python
mis_numeros
=
np
.
arange
(
2
,
1000
)
primos_por_rango
=
[]
for
r
in
mis_numeros
:
cantidad_primos
=
contador_primos
(
r
)
primos_por_rango
.
append
(
cantidad_primos
)
plt
.
figure
(
figsize
=
(
20
,
20
))
plt
.
plot
(
mis_numeros
,
primos_por_rango
,
"
k.
"
)
plt
.
xlabel
(
'
Rango de números
'
)
plt
.
ylabel
(
'
Cantidad de números primos
'
)
plt
.
title
(
'
Números primos hasta 1000
'
)
plt
.
show
()
```
%% Output
%% Cell type:code id:0ec25533-53f7-48be-8c79-a7f946cfc032 tags:
```
python
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment