কোনও সংখ্যা অন্য সংখ্যার (পাইথন) দ্বারা বিভাজ্য কিনা তা আপনি কীভাবে পরীক্ষা করতে পারেন?


112

আমার পরীক্ষা করতে হবে যে 1 থেকে 1000 পর্যন্ত প্রতিটি সংখ্যা 3 বা একটি 5 এর একাধিক কিনা তা আমি ভেবেছিলাম যে আমি এটি যেভাবে করব তা এই সংখ্যাটি 3 দ্বারা বিভক্ত করা হবে, এবং যদি ফলাফলটি পূর্ণসংখ্যা হয় তবে এটি হবে ৩. এর সাথে একাধিক।

সংখ্যাটি পূর্ণসংখ্যা কিনা তা আমি কীভাবে পরীক্ষা করব?

আমার বর্তমান কোডটি এখানে:

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
পাইথন ২.x এ, পূর্ণসংখ্যা বিভাগ সর্বদা একটি পূর্ণসংখ্যা দেয়।
রাসেল বোরোগোভ

14
আপনার "ফিজ" এবং "বাজ" মুদ্রণ করা উচিত
উইম

9
প্রকল্পের ইউলারের সমস্যা 1?
আশুতোষ দাভে

উত্তর:


225

আপনি এটি মডুলাস অপারেটর ব্যবহার করে করেন, %

n % k == 0

যদি nসঠিক একাধিক হয় তবে সত্য এবং যদি তা মূল্যায়ন করে k। প্রাথমিক গণিতে এটি বিভাগ থেকে বাকি হিসাবে পরিচিত।

আপনার বর্তমান পদ্ধতির আপনি একটি বিভাগ সঞ্চালন এবং ফলাফল হয় হয়

  • আপনি যদি পূর্ণসংখ্যা বিভাগ ব্যবহার করেন তবে সর্বদা একটি পূর্ণসংখ্যা বা
  • আপনি যদি ভাসমান পয়েন্ট বিভাগ ব্যবহার করেন তবে সর্বদা একটি ভাসা।

বিভাজ্যতা পরীক্ষা করার জন্য এটি কেবল ভুল উপায়।


0% 5 == 0 এছাড়াও সত্য হবে তবে শূন্য শূন্যের সাথে একাধিক নয়।
ফিউশন

@ ফিউশন0 == 0*5
ডেভিড

@ ক্রিস_র্যান্ডস এর উত্তরে বলুন, কোড-গল্ফ (আমার মতো) লোকেরা খুব খুশি হবে। আসলে, আমি এখানে এর মতো একটি গল্ফ উত্তর খুঁজছিলাম।
মিল্কিওয়ে 90

5

%বিভাজ্যতা যাচাই করতে আপনি কেবল মডুলাস অপারেটরটি ব্যবহার করতে পারেন ।
উদাহরণস্বরূপ: n % 2 == 0অর্থ n হ'ল 2 দ্বারা বিভাজ্য এবং এর n % 2 != 0অর্থ n 2 দিয়ে ঠিক বিভাজ্য নয়।


1

আমারও একই পন্থা ছিল। কারণ আমি বুঝতে পারি না কীভাবে মডিউল (%) অপারেটরটি ব্যবহার করতে হয়।

6% 3 = 0 * এর অর্থ আপনি যদি 6 দ্বারা 3 কে ভাগ করেন তবে আপনার আর অবশিষ্টটি থাকবে না, 3টি 6 এর একটি ফ্যাক্টর।

এখন আপনাকে এটি আপনার প্রদত্ত সমস্যার সাথে সম্পর্কিত করতে হবে।

যদি n% 3 == 0 * এটি বলছে, যদি আমার নম্বর (এন) 0 দিয়ে একটি বাকী রেখে 3 দ্বারা বিভাজ্য হয়।

আপনার তখন (মুদ্রণ, ফিরে) বিবৃতি যোগ করুন এবং আপনার চালিয়ে যান


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)

বা যে কোনও সংখ্যক জিনিস।


আপনার প্রশ্নের উত্তর দেওয়ার জন্য: সিটিআরএল + কে ইনডেন্ট নির্বাচন করুন। আমি আপনার জন্য এই সময়ের জন্য এটি করেছি।
জিন-

-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
আপনি যে ফিক্স দিয়েছেন এবং কীভাবে এটি কাজ করেছে তা ব্যাখ্যা করার জন্য এটি আরও ভাল

1
বিভাজ্যতা পরীক্ষা করার পক্ষে এটি ভাল উপায় নয়: ভাসমান অংশটি (আক্ষরিক) ".0" খুব কম অদক্ষ, এবং সম্ভবত উপর নির্ভর করে ভুল কিনা তা সন্ধান করার জন্য একটি ফ্লোট বিভাজন করা, একটি স্ট্রিংয়ে রূপান্তর করা এবং তারপরে স্ট্রিং ম্যানিপুলেশনগুলি করা। ভাসমান পয়েন্ট বাস্তবায়ন এবং রূপান্তরগুলি করে এমন কোড।
নিকড

উদাহরণস্বরূপ 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);    
  }
}

আমি সন্দেহ করি জাভা পাইথন, সুতরাং এটি কোনও বৈধ উত্তর নয়
মিলকিওয়াই 90

আপনার উত্তর প্রশ্নের সাথে প্রাসঙ্গিক নয়
বারাডারাজু জি

-6

জিনজা 2 টেমপ্লেট ফিজবুজ:

<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
পাইথনের একটি সমাধান চেয়েছিল was
jmd_dk

1
আপনার উত্তর প্রশ্নের সাথে প্রাসঙ্গিক নয়
বারাডারাজু জি

-7

সবচেয়ে সহজ উপায় হল সংখ্যাটি পূর্ণসংখ্যা কিনা তা পরীক্ষা করা int(x) == x। নাহলে ডেভিড হেফারনান যা বলেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.