Euler Problem 9-Özel Pisagor Üçlüsü(Perl)

Selamlar,
Uzun aradan sonra bu yazıda Euler Problemlerinden 9 numaralı olanından bahsedeceğim.
Problemin orijinali:
euler9-soru

Problem bizden a<b<c şartını sağlayan ve a sayısının karesi ile b sayısının karesinin toplamının c sayısının karesine eşit olan (pisagor teoremi) ve yine a+b+c toplamının 1000 olacağı a,b,c sayılarını bulup çarpmamızı istiyor.

Verdiği örneğe bakacak olursak;

  • a=3
  • b=4
  • c=5

a<b<c şartını sağlıyor. Bizden istediği ikinci şart olan a ve b sayılarının kareleri toplamının c nin karesine eşit olma şartını da sağlıyor.(9+16=25)

Fakat 3+4+5=12 olduğu için istenen üçüncü şartı sağlamıyor. Bizim bulmamız gereken bu üç şartı sağlayan a,b,c üçlüsünün çarpımını bulmak. 🙂

Bunun için PERL dili ile yazdığım kodu paylaşacağım.

 #!/usr/bin/perl
#Ümit ŞEN
#21 Haziran 2013 23:15
#İzmir Bornova Evka-4

#Special Pythagorean triplet
#Problem 9
#A Pythagorean triplet is a set of three natural numbers, a  b  c, for which,

#a^2 + b^2 = c^2
#For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.

#There exists exactly one Pythagorean triplet for which a + b + c = 1000.
#Find the product abc.

$sayi=@ARGV[0];
sub pisagor
{
	$a=int($_[0]);
	$b=int($_[1]);
	$c = ($a*$a+$b*$b)**0.5;
	return $c;
}

for (my $i = 1; $i &lt;=$sayi; $i++)
{
	for (my $j = 1; $j &lt;=$sayi; $j++)
	{
		$c=pisagor($i,$j);
		if ($i&lt;$j and $i+$j+$c==$sayi)
		{

			print("İstenen :\n");
			print("a= $i,b= $j, c= $c\n");
			print("Çarpım = ".$i*$j*$c."\n");
			print("-----------------------------------\n");
		}
	}
}

Soru bizden toplamın 1000 olmasını istiyor ama ben kodu genel olarak her hangi bir toplam için yazdım. Parametre olarak 1000 girdiğimizde istenen sayıları buna göre bulacaktır.

Son olarak toplamı 12, 150, 300, 400 (bunları keyfi olarak seçtim) ve bizden istenen 1000 sonucuna göre hazırladığım örneğin resmini vererek yazıyı bitirelim. 🙂

euler9-ornek

Görüldüğü gibi toplamı 300 olan iki farklı pisagor üçlüsü varmış. 🙂

Bizden istenen a,b,c sayıları ise sırayla 200,375 ve 425 olarak bulundu. Bu sayıların çarpımı ise 31875000.

Teşekkürler.

About Ümit Şen

Mühendis
Bu yazı Euler Problemleri, Matematik & Geometri, Perl içinde yayınlandı ve , , , , , , , , , , , , , , , , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.