اعداد خود تقسیم


سطح دشواری ساده
اغلب در خشت سیستمهای حماسی تسلا
ریاضی

یک عدد به عنوان اعداد خود تقسیم شناخته می شود اگر -

1. تعدیل هر رقم عدد با عدد صفر است.

2. عدد باید شامل همه رقم های غیر صفر باشد.

به عنوان مثال - 128

128٪ 1 = 0 ، 128٪ 2 = 0 ، 128٪ 8 = 0

بنابراین یک عدد خود تقسیم کننده است.

اعداد خود تقسیم

مثال

ورودی: 128

خروجی: بله

ورودی: 10

خروجی: نه

توضیح

عدد داده شده را 128 بگذارید

یک متغیر موقت برای نگه داشتن مقدار عدد داده شده و یک رقم متغیر دیگر برای ذخیره رقم فعلی ایجاد کنید.

مراحل بررسی اینکه شماره داده شده یک عدد خود تقسیم کننده است یا خیر -

  • در ابتدا n = 128 ، دما = 128 ، رقم = 0.
  • مرحله 1: رقم = 8 و n٪ رقم = 0 یعنی 128٪ 8 = 0 ، بنابراین ، دما = 12.
  • مرحله 2: رقم = 2 و n٪ رقم = 0 یعنی 128٪ 2 = 0 ، بنابراین ، دما = 1.
  • مرحله 3: رقم = 1 و n٪ رقم = 0 یعنی 128٪ 1 = 0 ، بنابراین ، دما = 0.

از آنجا که تمام ارقام عدد داده شده 128 عدد داده شده را به طور کامل تقسیم می کنند ، می توان گفت که عدد داده شده یک عدد خود تقسیم کننده است.

الگوریتم

  1. مقدار اولیه متغیر / n را مقدار دهی کنید.
  2. ایجاد یک تابع برای بررسی اینکه آیا عدد داده شده خود تقسیم شده است که یک مقدار صحیح را به عنوان یک پارامتر قبول می کند.
  3. یک متغیر موقتی از نوع عدد صحیح ایجاد کرده و مقدار n را در آن ذخیره کنید.
  4. عبور از متغیر موقت و در حالی که متغیر موقتی از 0 بیشتر است ، یک متغیر عدد صحیح دیگر ایجاد کنید تا ارقام را ذخیره کند و آخرین رقم شماره داده شده را در آن ذخیره کند.
  5. پس از آن ، بررسی کنید که آیا متغیر رقم برابر با 0 و مقدار عدد داده شده نیست و یا متغیر رقم 0 است ، متغیر موقتی را به روز کنید زیرا متغیر موقتی تقسیم بر 10 دیگر false است.
  6. درست برگرد
  7. اگر مقدار برگشتی برابر با true است ، "بله" را چاپ کنید. دیگری چاپ "نه".

برنامه C ++ برای بررسی اعداد خود تقسیم شده

#include <bits/stdc++.h> 
using namespace std; 
  
bool isDivisible(int n, int digit){ 
    
    return ((digit != 0) && (n % digit == 0)); 

} 
  
bool selfDivide(int n){ 
    int temp = n; 
    while(temp > 0){ 
  
        int digit = n % 10; 
        if(!(isDivisible(n, digit))) 
            return false; 
  
        temp /= 10; 
    } 
    return true; 
} 
  
int main(){ 
    int n = 128; 
    if(selfDivide(n)) 
        cout<<"Yes"; 
    else
        cout<<"No"; 
    return 0; 
}
Yes

برنامه جاوا برای بررسی اعداد خود تقسیم شده

import java.io.*; 
  
class Divide{ 
  
    static boolean isDivisible(int n, int digit){ 
        
        return((digit != 0) && (n % digit == 0)); 
    
    } 
  
    static boolean selfDivide(int n){ 
        int temp = n; 
        while(temp > 0) { 
  
            int digit = n % 10; 
  
            if((isDivisible(n, digit)) == false) 
                return false; 
  
            temp /= 10; 
        } 
        return true; 
    } 
  
    public static void main(String args[]){ 
        int n = 128; 
  
        if(selfDivide(n)) 
            System.out.println("Yes"); 
        else
            System.out.println("No"); 
    } 
}
Yes

تحلیل پیچیدگی

پیچیدگی زمان: O (L) (L تعداد ارقام در تعداد داده شده است)

پیچیدگی فضا: O (1) زیرا ما از فضای ثابت استفاده کردیم.

منابع