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.
def perfeito(n): for i in range(1,n+1): prod = i * i if prod <= n: 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.
import math def perfeito(n): sup = int(math.sqrt(n)) for i in range(1,sup+1): prod = i * i if prod <= n: 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.
import turtle def triangulo(lado,orientacao,pos_x,pos_y,cor): # inicializa tartaruga turtle.showturtle() turtle.penup() turtle.goto(pos_x,pos_y) turtle.setheading(orientacao) turtle.colormode(255) turtle.pencolor(cor) turtle.pendown() # desenha triangulo for i in range(3): turtle.forward(lado) turtle.left(120) turtle.hideturtle() def boneco(lado,orientacao,pos_x,pos_y,cor,n): for i in range(n): triangulo(lado,orientacao,pos_x,pos_y,cor) pos_x = pos_x - lado//5 pos_y = pos_y - lado//5 orientacao = orientacao + 15 lado = lado + 10 if __name__ == '__main__': #triangulo(40,45,25,50,(0,255,255)) boneco(50,0,0,0,(0,0,255),10) turtle.exitonclick()
Sem comentários:
Enviar um comentário