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

Ali Reis

Hectopat
Katılım
27 Ekim 2020
Mesajlar
174
Çözümler
1
Mod alma kullanmadan bir sayının tek mi çift mi olduğunu nasıl anlarım acaba? Şimdiden yardımcı olacaklara teşekkürler.
 
Sayının birler basamağı 0, 2, 4, 6, 8 sayılarından herhangi birimi diye kontrol edebilirsin.
 
Artı -1 Eksi
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ı.
 
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ı stringe çevir ve en sağdaki karakteri al, daha sonra if ve elseif'ler ile kontrol et en sonda else kısmında da sayının tek olduğuna karar verirsin.
Sayıyı string'e dönüştürüp son basamağını "0", "2", "4", "6", "8" ile karşılaştırabilirsin.
 
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.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…