بدصورت نمبر لیٹکوڈ حل


مشکل سطح آرام سے
ریاضی

مسئلہ یہ بیان

اس پریشانی میں ہمیں ایک نمبر دیا جاتا ہے اور ہمیں جانچنا پڑتا ہے کہ یہ بدصورت نمبر ہے یا نہیں۔
دیئے گئے کہ بدصورت تعداد مثبت تعداد ہیں جن کے بنیادی عوامل میں صرف 2 ، 3 ، 5 شامل ہیں۔
نیز 1 کو عام طور پر بدصورت نمبر سمجھا جاتا ہے۔

مثال کے طور پر

6
true

وضاحت: 6 = 2 × 3

14
false

وضاحت: 14 = 2 × 7
14 بدصورت نہیں ہے کیونکہ اس میں ایک اور بنیادی عنصر 7 بھی شامل ہے۔

نقطہ نظر

مسئلے کے بیان سے یہ واضح ہے کہ ، بدصورت نمبر ہونے کے لئے اس میں کوئی بھی شامل نہیں ہونا چاہئے بنیادی عوامل 2,3،5 اور XNUMX کے علاوہ۔

ہم جانتے ہیں کہ ہر نمبر ایک یا ایک سے زیادہ بنیادی تعداد (سوائے 1) کے کچھ اختیارات کی پیداوار سے تشکیل پاتا ہے۔ لہذا ہم تعداد کو اس کے بنیادی عوامل میں مرتب کرسکتے ہیں اور دیکھ سکتے ہیں کہ آیا اس میں 2,3،5 اور XNUMX کے علاوہ اہم نمبر موجود ہیں یا نہیں۔

عنقریب کاری کا مطلب یہ ہے کہ اگر ایک بنیادی نمبر کسی تعداد کو مکمل طور پر تقسیم کرسکتا ہے تو وہ اس مخصوص تعداد کا عنصر ہوگا۔ لہذا اگر نمبر 2 سے قابل تقسیم ہے تو ہم دیئے گئے نمبر کو 2 سے تقسیم کرسکتے ہیں ، اس طرح عنصر 1 کی پہلی طاقت کو ختم کردیں گے۔ جب تک کہ 2 کے تمام اختیارات عدد سے خارج نہیں ہوجاتے ہیں ، ہم بار بار 2 سے تقسیم کریں گے۔
اسی طرح ہم عنصر 3 اور 5 کی بھی تمام طاقتوں کو ختم کردیں گے۔

اب یہ بات واضح ہے کہ اگر تعداد میں 2,3،5 اور 1 کے علاوہ کوئی اور بنیادی عوامل شامل ہیں تو ، موجودہ باقی تعداد XNUMX کے برابر نہیں ہوگی۔
لہذا آخر میں اگر تعداد 1 ہوجائے ، تو یہ بدصورت نمبر ہے اور ہم صحیح لوٹ جاتے ہیں ، ورنہ ہم جھوٹے کو لوٹ جاتے ہیں۔

عمل

سی ++ پروگرام برائے بدصورت نمبر لیٹکوڈ حل

#include <bits/stdc++.h>
using namespace std;

bool isUgly(int num) 
{	
  if(num<=0) return false;
   
  while(num%2==0) num/=2;
  while(num%3==0) num/=3;
  while(num%5==0) num/=5;
  
  if(num==1) return true; 
    else return false;
}

int main() 
{
    int num=8;
  
  if(isUgly(num))
    cout<<"true"<<endl;
  else
    cout<<"false"<<endl;

  return 0; 
}
true

بدصورت نمبر لیٹ کوڈ حل کے لئے جاوا پروگرام

import java.util.*;
import java.lang.*;


class UglyNumber
{  
   public static boolean isUgly(int num) 
   {
        if(num<=0) return false;
       
        while(num%2==0) num/=2;
        while(num%3==0) num/=3;
        while(num%5==0) num/=5;
        
        if(num==1) return true; 
        else return false;
        
    }
    
    public static void main(String args[])
    {
        int num=8;

        System.out.println(isUgly(num));
        
    }
}
true

بدصورت نمبر لیٹ کوڈ حل کے لئے پیچیدگی کا تجزیہ

وقت کی پیچیدگی

O (لاگ (ن)): ہم تعداد کو 2 ، 3 اور 5 میں تقسیم کر رہے ہیں جبکہ لوپ بار بار۔ لہذا وقت کی پیچیدگی O (لاگ (n)) ہوگی ، جہاں n دیئے گئے نمبر ہیں۔

خلائی پیچیدگی 

O (1): ہم کوئی اضافی جگہ استعمال نہیں کررہے ہیں ، لہذا یہ مستقل ہے۔