2011-08-09 3 views
8

두 숫자의 나누기가 나머지를 반환하는지 여부를 확인하는 가장 좋은 방법은 무엇입니까? 예를 들어, 값이 {3,5,7,8,9,17,19} 인 배열이 있습니다. 이제 위 배열에서 51의 완벽한 제수를 찾아야합니다. 이 문제를 해결할 더 간단한 방법이 있습니까?C의 나머지 부분을 찾는 방법은 무엇입니까?

+0

'{3,5,7,8,9,17,19}'범위가 상당히 의심 스럽습니다. * 거의 * 여기에 소수를 사용하는 것처럼 보입니다. 그러나 8은 소수가 아니며 11과 13이 누락되었습니다. – DarkDust

답변

15

당신은 사업부의 나머지 부분을 찾기 위해 % 연산자를 사용하고, 0과 결과를 비교할 수 있습니다.

예 :

if (number % divisor == 0) 
{ 
    //code for perfect divisor 
} 
else 
{ 
    //the number doesn't divide perfectly by divisor 
} 
+2

계수와 알림은 음수에 따라 다릅니다. http://stackoverflow.com/questions/13683563/whats-the-difference-between-mod-and-remainder – calandoa

+0

좋은 지적이지만 체크가 어떻게 바뀌는 지 모르겠습니다. 완벽한 분할을 위해서 –

+0

질문에 대한 답은 괜찮습니다. 그러나 C는 %, 나머지 연산자 및 나머지 연산자 사이의 관계에 대해 매우 모호합니다. 진술이 약간 부정확하여이 지점을 명확히하기위한 링크를 추가했습니다. – calandoa

4

나머지 연산자 %을 사용하면 나머지를 반환합니다.

int a = 5; 
int b = 3; 

if (a % b != 0) { 
    printf("The remainder is: %i", a%b); 
} 
+0

@Joey - 왜 예제를 삭제 했습니까? – MByD

+0

나는하지 않았다. 방금 오타를 수정하고 연산자 기호를 추가했습니다. 동시 편집 내용이 충돌 할 수 있습니다. SO는 MediaWiki보다 더 열악합니다. 나는. 편집 할 때 한 문장 만 보았고 동시 수정시 알림을받지 못했습니다. 죄송합니다 :/ – Joey

+0

사과드립니다 ... 제가보기에 문제가 있다고 생각했습니다 ... 감사합니다. – MByD

1

위의 모든 답변은 정확합니다. 완벽한 제수를 찾으려면 데이터 세트를 제공하십시오 :

#include <stdio.h> 

int main() 
{ 

int arr[7] = {3,5,7,8,9,17,19}; 
int j = 51; 
int i = 0; 

for (i=0 ; i < 7; i++) { 
    if (j % arr[i] == 0) 
     printf("%d is the perfect divisor of %d\n", arr[i], j); 
} 

return 0; 
} 
+0

영업 사원은 3 또는 9가 이러한 경우 완전한 제수로 간주되어야하는지 분명히해야합니다. 그렇지 않으면 어레이에있는 점이 없기 때문에 나는 9라고 가정합니다. 어떤 경우에는 역순으로 반복해야합니다. – tinman

관련 문제