Como encontrar os números perfeitos entree 1 e um dado n? Por número perfeito entende-se um número que é igual ao produto de dois inteiros iguais. Por exemplo, 25 = 5 * 5 é um número perfeito. Outra forma de definir seria dizer que é um número cuja raiz quadrada é um inteiro.
Uma solução muito simples será calcular os sucessivos produtos de um inteiro por si próprio filtrando os resultados menores ou iguais a n.
1.
def
perfeito(n):
2.
for
i
in
range(
1
,n
+
1
):
3.
prod
=
i
*
i
4.
if
prod <
=
n:
5.
print
(n)
1.
import
math
2.
3.
def
perfeito(n):
4.
sup
=
int(math.sqrt(n))
5.
for
i
in
range(
1
,sup
+
1
):
6.
prod
=
i
*
i
7.
if
prod <
=
n:
8.
print
(n)
Pergunta 3
Esta pergunta é semelhante à colocada na TP1. Daí que apresentemos apenas a solução. O leitor deve referir-se ao texto anterior caso não entenda o que é apresentado. Dito isto, chamamos a atenção para o modo como conseguimos que a formação seja diferente, alterando apenas o modo de modificar a nova posição.
01.
import
turtle
02.
03.
def
triangulo(lado,orientacao,pos_x,pos_y,cor):
04.
# inicializa tartaruga
05.
turtle.showturtle()
06.
turtle.penup()
07.
turtle.goto(pos_x,pos_y)
08.
turtle.setheading(orientacao)
09.
turtle.colormode(
255
)
10.
turtle.pencolor(cor)
11.
turtle.pendown()
12.
# desenha triangulo
13.
for
i
in
range(
3
):
14.
turtle.forward(lado)
15.
turtle.left(
120
)
16.
turtle.hideturtle()
17.
18.
def
boneco(lado,orientacao,pos_x,pos_y,cor,n):
19.
for
i
in
range(n):
20.
triangulo(lado,orientacao,pos_x,pos_y,cor)
21.
pos_x
=
pos_x
-
lado
/
/
5
22.
pos_y
=
pos_y
-
lado
/
/
5
23.
orientacao
=
orientacao
+
15
24.
lado
=
lado
+
10
25.
26.
if
__name__
=
=
'__main__'
:
27.
#triangulo(40,45,25,50,(0,255,255))
28.
boneco(
50
,
0
,
0
,
0
,(
0
,
0
,
255
),
10
)
29.
turtle.exitonclick()