Exacto. Em Python não há switch. Tem que ser criado manualmente. No exame de uma cadeira em que a linguagem era Python, tinha uma questão em que se pretendia exactamente isso
Quanto ao problema em questão:
Código:from math import sqrt def primo(num): if num<4: return 1 elif num%2==0: return 0 else: for i in range(2,int(sqrt(num))+1): if num%i==0: return 0 return 1 def main(): i=0 z=1 n=input("Insira n\n") while i<n: z+=1 if primo(z): i+=1 print "Primo -> ",z if __name__=="__main__": main()
Se não fosse pedir muito, podias explicar o teu como chegaste a isto? Explicar o raciocínio?
from math import sqrt
def primo(num):
if num<4: #Se o número for menor do que 4 (1 já foi excluído) tem que ser primo
return 1
elif num%2==0: #Caso contrário, se o número for par não é primo
return 0
else: #Caso contrário verifica se o número é divisível por outro de 2 até ao valor da sua raiz quadrada
for i in range(2,int(sqrt(num))+1):
if num%i==0:
return 0
return 1
def main():
i=0 #Inicialização do numero de primos encontrados
z=1 #Inicialização do número a comprovar se é primo (como está a 1 e incrementa logo no início, exclui o 1)
n=input("Insira n\n")
while i<n: #Enquanto não se encontrarem n primos
z+=1 #Incrementa o número a comprovar
if primo(z): #Se for primo
i+=1 #Incrementa o númeor de primos encontrados
print "Primo -> ",z #Imprime o primo encontrado
if __name__=="__main__":
main()
entre outros.. agora so me lembrei desses.. mas havia mais programas que faziam parte do nosso ritual-numeros primos de um intervalo(ja foi dito atras)
-adivinhar um numero de 0 a 100 gerado pelo pc (random..) (o PC vai dizendo se e mais alto ou mais baixo do que a tentativa)
-dizer os anos bissextos de um intervalo de anos (tipo de 1000 a 2000)
dizer todos os divisores de um certo numero
calculadoras com diversas funcoes (quadrados, raizes, operacoes basicas etc..)
chave do totoloto / euromilhoes (nunca acertou mesmo )
//Programa que encontra todos os numeros primos num intervalo
#include <iostream>
using namespace std;
int main()
{
int a, b
cout << "Este programa descobre todos os numeros primos num dado intervalo" << endl;
cout << "\nIntroduza um numero, prima ENTER e em seguida introduza outro numero" << endl;
cin >> a >> b;
cout << "\nNumeros primos entre " << a << " e " << b << ":" <<endl;
if (a<b)
primo(a);
cin.get();
cin.get();
return 0;
}
int primo( int a)
{
while ((a%z != 0) && (z < ( a / 2)))
z= z + 1
if (z= a/2)
a=a+1
else
{
a=a + 1
return a;
}
}
na função primo. falta declarar e iniciar a variavel z
em vez de if (z= a/2), deve ser if (z== a/2)
depois isso calcula os primos (se estiver certo, não estou com cabeça apra ver isso agora) mas não os escreve
btw, escusas de ter medo de compilar. no máximo podias ter um ciclo infinito mas bastava desligares o processo pelo gestor de tarefas
primo(a)
queimar o processador?? nem pensar! os jogos também usam muito a placa gráfica e ela não se estraga pois não? se o processador tem uma velocidade de X GHz o que o programa vai fazer é ocupar muitos desse Hz, tornando talvez o computador mais lento.
para queimar era preciso que o programa fizesse overclock ao processador ou desligasse o cooler, sei lá
Dentro da função primo estou a ver a falta de muitos ";"s. Isso não estará a causar problemas?
//Programa que encontra todos os numeros primos num intervalo
#include <iostream>
using namespace std;
int primo( int a)
{
int z;
while ((a%z != 0) && (z < ( a / 2)))
z= z + 1;
if (z= a/2)
a=a+1;
else
{
a=a + 1;
return a;
}
}
int main()
{
int a, b;
cout << "Este programa descobre todos os numeros primos num dado intervalo" << endl;
cout << "\nIntroduza um numero, prima ENTER e em seguida introduza outro numero" << endl;
cin >> a >> b;
cout << "\nNumeros primos entre " << a << " e " << b << ":" <<endl;
if (a<b)
primo(a);
cin.get();
cin.get();
return 0;
}
A função primo só termina se entrar no bloco do else. Se por acaso entrar no do if, não termina.
int primo( int a)
{
int z;
while ((a%z != 0) && (z < ( a / 2)))
z= z + 1;
if (z= a/2)
{
a=a+1;
return 0;
}
else
{
a=a + 1;
return a;
}
}
//Programa que encontra todos os numeros primos num intervalo
#include <iostream>
using namespace std;
int primo( int a)
{
int z;
while ((a%z != 0) && (z < ( a / 2)))
{
z= z + 1;
if (z= a/2)
{
a=a+1;
int main();
return 0;
}
else
{
cout << a << endl;
a=a + 1;
int main();
return a;
}
}
}
int main()
{
int a, b;
cout << "Este programa descobre todos os numeros primos num dado intervalo" << endl;
cout << "\nIntroduza um numero, prima ENTER e em seguida introduza outro numero" << endl;
cin >> a >> b;
cout << "\nNumeros primos entre " << a << " e " << b << ":" <<endl;
if (a<b)
{
int primo(a);
}
cin.get();
cin.get();
return 0;
}
já não trabalho com o C++ há muito tempo, mas julgo que te deve faltar o "#include <math.h>"
Era isso mesmo que faltava...obrigado pela resposta Armadillo.
EDIT: Como é que eu sei quais os ficheiros que existem e quais os que devo incluir quando faço um programa em c++???
//Programa que encontra todos os numeros primos num intervalo
#include <iostream>
using namespace std;
int a, b;
int funcao(); //Função auxiliar
int primo( int a)
{
int z;
z=1;
z= z+1;
if ((a%z != 0) && (z < ( a / 2)))
z= z + 1;
else if (z < ( a / 2))
{
cout << a << endl;
a=a + 1;
int funcao();
return a;
}
else
int funcao();
}
int funcao()
{
if (a<b)
{
int primo(a);
}
else
{
cin.get();
cin.get();
return 0;
}
}
int main()
{
int a, b;
cout << "Este programa descobre todos os numeros primos num dado intervalo" << endl;
cout << "\nIntroduza um numero, prima ENTER e em seguida introduza outro numero" << endl;
cin >> a >> b;
cout << "\nNumeros primos entre " << a << " e " << b << ":" <<endl;
if (a<b)
{
int primo(a);
}
else
{
cout << "O primeiro numero tem de ser menor do que o segundo" << endl;
cout << "Prima ENTER para sair";
cin.get();
cin.get();
return 0;
}
cin.get();
cin.get();
return 0;
}
int primo( int a)
{
int z;
z=1;
z= z+1;
if ((a%z != 0) && (z < ( a / 2)))
z= z + 1;
else if (z < ( a / 2))
{
cout << a << endl;
a=a + 1;
int funcao();
return a;
}
else
int funcao();
}