ennrh adlı üyeden alıntı

Kodunu yazacak zamanım yok ama algoritma taktikleri verebilirim. Öncelikle bütün karakterlerin ascii tablosundaki değerlerini bul. String tipindeki bir karakterin int tipindeki değeri onun ascii tabloundaki değeridir. Örnek olarak:

0-9 arası rakamlar ascii de (50,40] arasına denk geliyorsa mesela

if(a1<50 && a1>=40) {
// a1 rakamdır sonucuna ulaşırız.
}

Sonra asal kontrolü için sayının yarısından itibaren birer azaltarak bölmeye başlarız. Bu arada her tam bölündüğünde sayaç tutarız. Sayaç 1 ise yani sadece 1 e tam bolunuyorsa asaldır.

Aynı şekilde küçük harf ve büyük harf durumunda ascii tablosunda aralarında sabit bir sayı vardır. Örnek olarak a ile A arasında 30 varsa b ile B arasında da 30 vardır. Karakterin harf olduğunu bulunca ascii değerine +30 ekleyip basıyorsun ekrana.

Alfanümerik kısmını pek anlayamadım. Bu kadar yardım edebildim dostum. Yazdıklarım üzerinde düşünürsen birazda araştırırsan yaparsın.


Burada bir ekleme yapmak istiyorum. Performans açısından, asal kontrolü yaparken sayının yarısına değil, kareköküne kadar bakmak daha hızlı olacaktır. Çünkü bir sayının asal bölenleri, o sayının karekökünden büyük olamaz.

Onun dışında aslında asal sayı bulmak için daha iyi algoritmalar var, fermat eular ve modüler aritmatik kullanılarak. Örneğin miller-rabin algoritmasını araştırabilirsiniz.

Gerçi hocanızın sorduğu soru için kareköküne kadar hesaplamanız yeterli.