2011-08-09 14 views
8

यह पता लगाने का सबसे अच्छा तरीका कौन सा है कि दो संख्याओं का विभाजन शेष लौटाएगा? उदाहरण के लिए, उदाहरण के लिए मेरे पास मूल्यों के साथ एक सरणी है {3,5,7,8,9,17,19}। अब मुझे उपर्युक्त सरणी से 51 का सही विभाजक खोजने की जरूरत है। क्या इसे हल करने का कोई आसान तरीका है?सी में एक विभाजन का शेष कैसे खोजें?

+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

उत्तर प्रश्न के संबंध में ठीक है, लेकिन सी%, मॉड्यूलो और शेष ऑपरेटरों के बीच संबंध के बारे में बहुत अस्पष्ट है, और आपका कथन थोड़ा अपरिचित था, इसलिए मैंने अभी इस बिंदु को स्पष्ट करने के लिए एक लिंक जोड़ा है। – calandoa

4

मॉड्यूलस ऑपरेटर % का उपयोग करें, यह शेष देता है।

int a = 5; 
int b = 3; 

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

@ जॉय - आपने उदाहरण क्यों हटाया? – MByD

+0

मैंने नहीं किया; मैंने बस एक टाइपो को सही किया और ऑपरेटर चिह्न जोड़ा। हो सकता है कि एक साथ संपादन यहाँ संघर्ष कर रहे थे। MediaWiki की तुलना में एसओ भी गरीब है। अर्थात। जब मैं इसे संपादित कर रहा था तो मैंने केवल एक वाक्य देखा और समवर्ती संशोधन पर अधिसूचना नहीं मिली। क्षमा करें:/ – Joey

+0

मेरी माफ़ी ... मैंने सोचा कि आपको मेरे उदाहरण के साथ कुछ समस्या है ... और धन्यवाद! – MByD

1

उपरोक्त सभी उत्तर सही हैं। सही divisor खोजने के लिए बस अपने डेटासेट के साथ प्रदान करना:

#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

संबंधित मुद्दे