Serie di Collatz

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
scrivere un programma che generi la serie di Collatz, a partire da un numero inserito dall'utente

[perl]
Codice:
#!/usr/bin/perl
$num = shift or die "usage: $0 <number>\n";
print "$num\n";
while ($num>1) {
if ($num%2==0){
$num = $num/2
} else {$num=(3*$num)+1}
print "$num\n";
#sleep 1;
}

ho commentato lo sleep. se volete decommentatelo, in modo da poter leggere bene i numeri, basta togliere il #
 
D
Codice:
import std.stdio;

int main(string[] args) {
	int a;
	scanf("%d",&a);
	printf("\n%d",a);
	do {
		if(a%2) a/=2;
		else a=(3*a)+1;
		printf("\n%d",a);
	}while(a>1);
	return 0;
}
 
Python:
Codice:
from sys import argv
n = int(argv[1])

while n>1:
	print n
	if n%2==1: n = (3*n)+1
	else: n/=2
print n
E' un esercizio molto famoso, comunque.
Da qualche parte sul pc dovrei forse avere un vecchio listato con diverse ottimizzazioni, ma non lo trovo.
 
Stato
Discussione chiusa ad ulteriori risposte.