2016-09-08 46 views
7
Bilmek istiyorum

Örneğin 3.İkili bir sayının 3'e bölüp çarpmadığını nasıl öğrenebilirim?

bölünmesi için ikili sistemde herhangi bir bölünebilir kural var: onlu, rakam toplamı daha sonra sayı xmaple değerlerinin 3 değerine bölünmesi 3'e bölünür ise: 15 -> 1+5 = 6 -> 6 olduğunu böylece 15 3.

anlamak önemli şey bölünür 3'e bölünür o im bunu yapacağız bir KODU .. bool bayrak = (i% 3 == 0) aramıyor; aradığım cevap değil. İnsanın ondalık yasası kadar basit bir şey yapmasını istiyorum.

+0

ile, belki de daha uygundur [math.SE] (http://math.stackexchange.com/) için bölünebilir değildir. –

+1

[CS.SE'deki Çözüm] (http://cs.stackexchange.com/questions/7879/algorithms-computing-if-a-number-is-a-multiple-of-3/7889#7889). Benzer çözümler herhangi bir n-ary sayı sistemi ve bölen için çalışır. –

cevap

13

bu web sitesine bakın:

How to Tell if a Binary Number is Divisible by Three Temelde sıfır olmayan küsur pozisyonları bit ve sıfırdan bile pozisyon sağa den bitleri sayısını. bunların farkı 3 ile bölünebilir ise, sayı Örneğin 3.

bölünemeyen:

tek 2 ve 2 daha da sıfır olmayan bitleri bulunmaktadır

15 = 1111. Fark 0'dır. Dolayısıyla 15, 3 tarafından bölünebilir. 2 tek sıfır olmayan bitleri ve 3 hatta sıfır olmayan bitleri bulunmaktadır

185 = 10111001. Fark 1'dir. Dolayısıyla 185, 3 tarafından bölünemez.

Açıklama

2^n değerleri göz önünde bulundurun. 2^0 = 1'un uyumlu 1 mod 3 olduğunu biliyoruz. Böylece 2^1 = 22*1 = 2 mod 3. desen devam congurent, biz 2^n uyumlu 1 mod 3 olduğunu 2^n n tek sayıdır fark ve hatta için -1 mod 3 olan uyumlu 2 mod 3 olduğunu. Bu nedenle 10111001 uyumlu 1*1 + 0*-1 + 1*1 + 1*-1 + 1*1 + 0*-1 + 0*1 + 1*-1 mod 3 uyumlu olan 1 mod 3. Böylece 185 Bu soru 3.

+0

Çok teşekkürler, Bu numara için matematiksel açıklama nedir biliyor musunuz? –

+1

@ItayBraha: Tam bir açıklama değil: Bu, ondalık sayı 11 ile bölünebilir ise, test için aynı hile. Burada anahtar kelime * alternatif haneli toplamı *. Eğer ve sadece ondalık basamaktaki dönüşümlü basamak toplamı 11 ile bölünebilir ise, orijinal sayıdır. Bölünebilirliği test etmek istediğiniz sayı, sayı sisteminin * yarıçapından * daha fazla olduğunda kullanılabilir. Radyalin altındaki sayıların bölünebilirliğini test etmek için (örneğin ondalık sistem için 9), normal rakam toplamını kullanın. Böylece bir kişi onaltılık gösterimde de bölünebilirliği 17 ile kolayca test edebilir. –

+0

Ondalık olarak 11 için bölünebilirlik testi, ikilide 3'tekiyle aynıdır. Ayrıca, ikili 3'tür. 11 Bir şey mi eksik? –