segunda-feira, 26 de outubro de 2015

Teste # 1 - TP2

Pergunta 2

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)
Fácil, certo? Mas será que vale a pena repetir i ciclo n vezes?? Por exemplo, se n=100 é claro que basta testar os inteiros … até 10, ou seja,até à raiz quadrada de 100. Daí uma nova solução.
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)
E pronto. Notar apenas que temos que garantir que os argumento de range são números inteiros.

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()

Sem comentários:

Enviar um comentário