Project Euler -03

Yazının öncesinde önemli not: Yazar ileride bu yazının içeriğini kendi kodunu ekleyerek güncellemeyi taahhüt etmektedir.

ProjectEuler’ın 3. sorusunu C++ kullanarak yapmaya çalıştım ama bi süre sonra bişeyler ters gitti, bende netten yardım aldım bu kez. Şimdiye kadar blogumda sadece tek başıma yaptığım şeyler oldu ama bu kez kendi kodum yerine bu kez http://rianjs.net/2011/05/cpp-solution-to-project-euler-problem-3 adresindeki kodu inceledim ve sorunun tamamen bugün dikkatimi kodlamaya yeterince odaklayamamamdan kaynaklandığını gördüm. Kodu yazan abimizde çok temiz yazmış. İşte o kod:

#include 
using namespace std;

long long is_prime(long long n)
{
	//returns 0 if not prime, 1 if prime
	if (n % 2 == 0)
		return 0;		// is even, therefore not prime
	for (long long i = 3; i <= ((n / 2) + 1); i += 2)	// Skip all the even numbers
	{
		if (n % i == 0)
			return 0;	//not prime
	}
	return 1;
}

long long find_bigprime(long long n)
{
	long long factor = 0;
	for(long long i = 3; i <= n; i += 2)
	{
		if (n % i == 0)
		{
			if (is_prime(i))
			{
				factor = i;
				cout << factor << endl;
			}
		}
	}
	return factor;
}

int main()
{
	long long input = 600851475143;
	cout << find_bigprime(input);

	return 0;
}

kendime not: çabuk git canını ne sıktıysa üstesinden gel, kafanı topla, işinle gücünle uğraş. hadi bakıyım.