आप कैसे जांचते हैं कि एक संख्या किसी अन्य संख्या (पायथन) द्वारा विभाज्य है या नहीं?


112

मुझे यह परखने की जरूरत है कि क्या प्रत्येक संख्या 1 से 1000 तक 3 की संख्या से अधिक है या 5 से अधिक है। जिस तरह से मैंने सोचा था कि मैं यह करूंगा कि संख्या को 3 से विभाजित किया जाए, और यदि परिणाम पूर्णांक है तो यह बहु का होना 3. 5 के साथ समान।

मैं कैसे परीक्षण करूं कि संख्या पूर्णांक है या नहीं?

यहाँ मेरा वर्तमान कोड है:

n = 0
s = 0

while (n < 1001):
    x = n/3
    if isinstance(x, (int, long)):
        print 'Multiple of 3!'
        s = s + n
    if False:
        y = n/5
        if isinstance(y, (int, long)):
            s = s + n

    print 'Number: '
    print n
    print 'Sum:'
    print s
    n = n + 1

2
पायथन 2.x में, पूर्णांक विभाजन हमेशा एक पूर्णांक देता है।
रसेल बोरोगोव

14
आप मुद्रण किया जाना चाहिए "सीटी" और "बज़"
विम

9
परियोजना यूलर समस्या 1?
आशुतोष दवे

जवाबों:


228

आप इसे मापांक ऑपरेटर का उपयोग करके करते हैं, %

n % k == 0

सच का मूल्यांकन करता है अगर और केवल अगर nएक सटीक एकाधिक है k। प्रारंभिक गणित में यह एक विभाजन से शेष के रूप में जाना जाता है।

आपके वर्तमान दृष्टिकोण में आप एक विभाजन करते हैं और परिणाम या तो होगा

  • हमेशा एक पूर्णांक यदि आप पूर्णांक विभाजन का उपयोग करते हैं, या
  • यदि आप फ्लोटिंग पॉइंट डिवीजन का उपयोग करते हैं तो हमेशा एक फ्लोट।

यह विभाज्यता के परीक्षण के बारे में जाने का गलत तरीका है।


0% 5 == 0 यह सच भी होगा, लेकिन शून्य सटीक शून्य से अधिक नहीं है।
फ्यूजन

@ फ़्यूज़न0 == 0*5
डेविड

@ क्रिस_रैंड्स ने कहा कि एक जवाब में, जो लोग कोड-गोल्फ (मेरी तरह) करते हैं, वे बहुत खुश होंगे। वास्तव में, मैं इस तरह एक गोल्फ के जवाब की तलाश में यहां आया था।
MilkyWay90

5

आप बस %विभाज्यता की जांच करने के लिए मोडुलस ऑपरेटर का उपयोग कर सकते हैं ।
उदाहरण के लिए: n % 2 == 0n का मतलब 2 से बिल्कुल विभाज्य है और n % 2 != 0इसका मतलब है कि n 2 से बिल्कुल विभाज्य नहीं है।


1

मेरा भी यही दृष्टिकोण था। क्योंकि मुझे समझ नहीं आया कि मॉड्यूल (%) ऑपरेटर का उपयोग कैसे किया जाए।

6% 3 = 0 * इसका मतलब है यदि आप 6 को 3 से विभाजित करते हैं तो आपके पास शेष नहीं होगा, 3 6 का एक कारक है।

अब आपको इसे अपनी दी गई समस्या से संबंधित करना होगा।

यदि n% 3 == 0 * यह कह रहा है, यदि मेरी संख्या (n) 3 से विभाज्य है, तो 0 को छोड़ना चाहिए।

अपना तत्कालीन (प्रिंट, रिटर्न) स्टेटमेंट जोड़ें और अपना जारी रखें


0

आप दिए गए नंबर के विभाजन की जांच करने के लिए % ऑपरेटर का उपयोग कर सकते हैं

यह देखने के लिए कि क्या नहीं दिया गया है। 3 या 5 से विभाज्य है जब कोई नहीं। 1000 से कम नीचे दिया गया है:

n=0
while n<1000:
    if n%3==0 or n%5==0:
        print n,'is multiple of 3 or 5'
    n=n+1

0

यह कोड वही करता है जो आप पूछ रहे हैं।

for value in range(1,1000):
    if value % 3 == 0 or value % 5 == 0:
        print(value)

या कुछ पसंद है

for value in range(1,1000):
    if value % 3 == 0 or value % 5 == 0:
        some_list.append(value)

या कोई भी चीज।


अपने प्रश्न का उत्तर देने के लिए: चयन करें और ctrl + K इंडेंट करें। मैंने इस समय आपके लिए किया है।
जीन फ़्राँस्वा Fabre

-1
a = 1400
a1 = 5
a2 = 3

b= str(a/a1)
b1 = str(a/a2)
c =b[(len(b)-2):len(b)]
c1 =b[(len(b1)-2):len(b1)]
if c == ".0":
    print("yeah for 5!")
if c1 == ".0":
    print("yeah for 3!")

1
इसके बेहतर ठीक आप दे दिया है और क्या किया यह काम किया समझाने के लिए
chans

1
यह विभाज्यता का परीक्षण करने का एक अच्छा तरीका नहीं है: एक फ्लोट डिवीजन करना, एक स्ट्रिंग में परिवर्तित करना और फिर यह खोजने के लिए स्ट्रिंग जोड़तोड़ करना कि क्या भिन्नात्मक भाग (शाब्दिक रूप से) ".0" बहुत कम अकुशल है, और संभवतः इसके आधार पर गलत है फ्लोटिंग पॉइंट कार्यान्वयन और कोड जो रूपांतरण करता है।
NickD

जैसे x=10000000000000000; b = str(x/(x-1)); bअजगर दुभाषिया में प्रयास करें ।
निकड

-2

छोटी संख्या के n%3 == 0लिए ठीक रहेगा। बहुत बड़ी संख्या के लिए मैं पहले क्रॉस राशि की गणना करने का प्रस्ताव करता हूं और फिर जांचता हूं कि क्या क्रॉस योग 3 से अधिक है:

def is_divisible_by_3(number):
    if sum(map(int, str(number))) % 3 != 0:
        my_bool = False
    return my_bool

2
क्रॉस योग की गणना करना और मापांक ऑपरेशन का उपयोग करना वास्तव में सीधे मापांक ऑपरेशन का उपयोग करने की तुलना में अधिक तेज है? यदि ऐसा है, तो जब तक संख्या "छोटा" पर्याप्त न हो, तब तक आपको अपने फ़ंक्शन को पुन: कॉल नहीं करना चाहिए?
हार्न

-6

इसे इस्तेमाल करे ...

public class Solution {

  public static void main(String[] args) {
    long t = 1000;
    long sum = 0;

    for(int i = 1; i<t; i++){
            if(i%3 == 0 || i%5 == 0){
                sum = sum + i;
            }
        }
        System.out.println(sum);    
  }
}

मुझे संदेह है कि जावा पायथन है, इसलिए यह एक मान्य उत्तर नहीं है
मिल्कीवेय

आपका उत्तर प्रश्न के लिए प्रासंगिक नहीं है
वरदराजू जी

-6

jinja2 टेम्पलेट fizzbuz:

<form>
  <ol>
    {% for x in range(1,n+1) %}
      {% set fizzbuzz_rpm = x %}
      {% if x % 3 == 0 and x % 5 == 0 %}
        {% set fizzbuzz_rpm="FizzBuzz" %}
      {% elif x % 3 == 0 %}
          {% set fizzbuzz_rpm="Fizz" %}
      {% elif x %5 == 0 %}
          {% set fizzbuzz_rpm="Buzz" %}
      {% endif %}
      <li>{{fizzbuzz_rpm}}</li>
    {% endfor %}
  </ol>
</form>

5
पायथन में एक समाधान के लिए कहा गया था।
jmd_dk

1
आपका उत्तर प्रश्न के लिए प्रासंगिक नहीं है
वरदराजू जी

-7

सबसे सरल तरीका यह परीक्षण करना है कि कोई संख्या पूर्णांक है या नहीं int(x) == x। अन्यथा, डेविड हेफ़रनन ने क्या कहा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.