C# Mod almadan bir sayının tek veya çift olduğunu belirlemek mümkün mü?

Zamanında bu ödev bana da verilmişti. Biraz araştırma sonucu sayısının binary temsili ile tek mi yoksa çift mi olduğunun anlaşılabildiğini öğrendim.

Bir sayının ikili temsilisi, sayıyı 2'nin üsleri doğrultusunda ifade ediyor. Bu bağlamda bir sayının en sağdaki biti, sayının tek mi yoksa çift mi olduğunu gösterir. Mesela sayı 1 ise tek, 0 ise çifttir.

Biraz daha araştırmam sonucunda mükemmel bir şey buldum.

Python:
sayi = 11
if sayi & 1 == 0:
    print(f"{sayi} çift bir sayıdır.")
else:
    print(f"{sayi} tek bir sayıdır.")

if ile koşullandırma kısmında & operatörünün kullanımıyla sayının ikili temsilindeki en düşük bit ile 1'in ikili temsilindeki en düşük bitin (0) bitwise işlemi yapar. Bu da sayı tek mi yoksa çift mi sorusunu cevaplandırır. @bitwise 'ın belki daha iyi bir fikri vardır.
 
Son düzenleme:
Yaaani yine mod almak gibi ama çok daha uzun yöntemi gibi olacak ama önce sayı 10'un altına düşene kadar sayıdan 10 çıkar, sonra 0'a veya altına inene kadar 2 çıkar. Eğer 0 kaldıysa sayı çifttir, -1'se tektir. Başka aklıma bir şey gelmedi şuan.

Yada yada yada, aklıma bir şey geldi. Binary'den kontrol etsene. Son değeri 0'sa çifttir, 1'se tektir. Bitwise & operatörü işe yaramalı.
 
Yaaani yine mod almak gibi ama çok daha uzun yöntemi gibi olacak ama önce sayı 10'un altına düşene kadar sayıdan 10 çıkar, sonra 0'a veya altına inene kadar 2 çıkar. Eğer 0 kaldıysa sayı çifttir, -1'se tektir. Başka aklıma bir şey gelmedi şuan.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
bir de recursive, tadından yenmiyor
 
Sayıyı A değişkenine ata. Girilen sayıyı 2'ye böl. Sonucu 2 ile çarpıp yeni bir değişkene ata.
Çarpımın sonucu ile A değişkenine atanan sayının eşit olup olmadığını kontrol et.
Eşit ise çift değil ise tek sayıdır.

A= 341;
B= 341/2; // Sonuç= 170
C= B*2;
İf A==B
// sayının çift olduğunu yazdıran kod parçasını yaz.
else
// sayının tek olduğunu yazdıran kod parçasını yaz.
 
Sayıyı A değişkenine ata. Girilen sayıyı 2'ye böl. Sonucu 2 ile çarpıp yeni bir değişkene ata.
Çarpımın sonucu ile A değişkenine atanan sayının eşit olup olmadığını kontrol et.
Eşit ise çift değil ise tek sayıdır.

A= 341;
B= 341/2; // Sonuç= 170
C= B*2;
İf A==B
// sayının çift olduğunu yazdıran kod parçasını yaz.
else
// sayının tek olduğunu yazdıran kod parçasını yaz.
Bence en iyi çözüm.
 

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı