Algoritma Sorularım
-
Selam muritler java da hazırlamam gerek 2 algoritma ödevi var.içinden çıkamadım.Yardımlarınızı bekliyorum
1.Girilen sayının asal sayı olup olmadığını söylecek.
2.Girilen iki string içinde yerleri aynı olmak şartıyla eşit olan karakterlerin bulunup ekrana yazdırma
-
1. Soru: Asal sayılar 1 ve kendisinden başka sayıya tam bölünemeyen sayılardır. Tam bölünmeyi de mod işlemi ile belirleriz. Örneğin X tamsayısının asal olup olmadığını bulan C++ programını aşağıda görebilirsiniz.
[code]
#include
YeniHarman tarafından 04/Kas/12 16:22 tarihinde düzenlenmiştir
#include
using namespace std;
bool SayiAsalMi(int sayi)
{
bool sonuc = true;
//istisnalar
if ( sayi == 0 || sayi == 1) // 0 ve 1
{
return false; //asal değildir
}
if ( sayi == 2) // 2
{
return true; // tek asal çift sayıdır.
}
if ( ( sayi % 2 == 0 ) && ( sayi != 2 ) ) //iki haricindeki çift sayilar
{
return false; //asal değildir
}
for (int i = 3; i < ( sayi / 2 ); ++i)
{
if ( sayi % i == 0)
{
sonuc = false;
break;
}
}
return sonuc;
}
int main(int argc, char *argv[])
{
for (int i = 0; i <= 250; ++i) //0 ile 250 arasındaki asal sayilar
{
if ( SayiAsalMi(i) )
{
cout << i << " sayisi asaldir!" << endl;
}
}
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
}[/code] -
2. soru: Burada iki stringi de karakter karakter karşılaştırıyoruz. Eğer iki karakter de eşitse +, değilse - koyuyoruz. Yine C++ örneği:
#include <cstdlib>
#include <iostream>
using namespace std;
void AyniHarfler(const string & str1, const string & str2)
{
size_t str1len = str1.length();
size_t str2len = str2.length();
int ituzunluk = 0;
const string * uzunstr = 0;
if (str1len > str2len)
{
ituzunluk = str2len;
uzunstr = &str1;
}
else
{
ituzunluk = str1len;
uzunstr = &str2;
}
int i = 0;
for(; i < ituzunluk; ++i)
{
cout << ( ( str1[i] == str2[i] ) ? '+' : '-' ) << i << ". " << str1[i] << endl;
}
for ( ; i < uzunstr->length(); ++i)
{
cout << '-' << i << ". " << (*uzunstr)[i] << endl;
}
}
int main(int argc, char *argv[])
{
string s1("abce");
string s2("abcd");
cout << s1 << '\t' << s2 << endl;
AyniHarfler (s1,s2);
cout << "Press the enter key to continue ...";
cin.get();
return EXIT_SUCCESS;
} -
teşekkürler hocam.
-
Bir sayı karekökünden önceki asal sayılara bölünmüyorsa asal sayıdır. Aşağıda arkadaş bir çözüm vermiş ama daha verimli (hızlı) olsun istiyosan, her bulduğun asal sayıyı array'ine ekle bir sonraki sayı üzerinde onları bölmeyi dene . Bir de döngün n/2 ye kadar değil n kök 2 ye kadar gitsin :)
