2010-07-09 25 views
21

Bir int hesabının ürününü dizgiye dönüştürerek dize işlemeyi (. veya , karakterinin olup olmadığını denetleme) kullanmadan.C# Bir sayının diğerinin katı olup olmadığı nasıl belirlenir?

ve veri türlerinden hatalar güvenerek deneme/yakalama senaryoları kullanmadan

.

C# sayısını kullanarak, özellikle bir sayı diğerinin katları olup olmadığını nasıl kontrol edersiniz? Örneğin, 6, 3'ün katlarıdır, ancak 7 değildir.

+0

Ödevler bana benziyor. Bu şekilde etiketlendi. –

+2

ev ödevi? Ev ödevi değil, şunu okudum: http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html –

+0

Buna göre yeniden etiketlendim :) –

cevap

58

public bool IsDivisble(int x, int n) 
{ 
    return (x % n) == 0; 
} 

modülü operatör% x n bölünebilir ise her zaman 0 olacak n ile x bölme sonra kalan döner inceleyin.

Daha fazla bilgi için bkz. the % operator on MSDN.

+0

% veya modda vb. bir örnekleme yapın, örneğin% 25 6 = 1. Yani 0 ise, hiçbir sol yoktur, yani ilk saniyenin katları olmalıdır. –

+1

Bir sayı n verildiğinde, bu şekilde başka bir sayı m cinsinden ifade edilebilir: n = k * m + r. Örneğin, 6 = 1 * (4) + 2 veya 6 = 2 * (3) + 0 x% y, daha önce bahsedilen formülde sadece 'r' terimini döndürür. –

+1

Eski soru ama sadece gelecekteki referanslar için, bu sadece 'n> x' olduğunda doğrudur, aksi takdirde sonuç '0' yerine x olur. Bu nedenle, çoklu sayı için doğru yaklaşım 'return n> = x && x% n == 0' – PedroC88

13

modülüne kullan (%) operatörü:

6 % 3 == 0 
7 % 3 == 1 
7

Ben dize şeyler hakkında o kısmını alamadım ama neden bir numara olup olmadığını kontrol etmek modülo operatörü (%) kullanmayın Başka bir tarafından bölünebilir? Bir sayı diğeri tarafından bölünebilirse, diğeri otomatik olarak bu sayının katlarıdır.

Böyle giderse: Bir

+0

Teşekkürler, bu sorunu çözmek için ürün üzerinde net kullanım dizesi manipülasyonunda gördüğüm bazı örnek kodlar. –

11
bool isMultiple = a % b == 0; 

Bu doğru olacaktır

yılında "tek Başka bir sayının katıdır"
#include<stdio.h> 
int main 
{ 
int a,b; 
printf("enter any two number\n"); 
scanf("%d%d",&a,&b); 
if (a%b==0) 
printf("this is multiple number"); 
else if (b%a==0); 
printf("this is multiple number"); 
else 
printf("this is not multiple number"); 
return 0; 
} 
0

followings programları çalıştırır b katları ise

int a = 10; int b = 5; 

    // is a a multiple of b 
    if (a % b == 0) .... 
İlgili konular