කැත අංක ලීට්කෝඩ් විසඳුම


දුෂ්කරතා මට්ටම පහසු
ගණිතය

ගැටළු ප්රකාශය

මෙම ගැටලුවේදී අපට අංකයක් ලබා දී ඇති අතර එය අවලස්සන අංකයක්ද යන්න පරීක්ෂා කර බැලිය යුතුය.
අවලස්සන සංඛ්‍යා ධනාත්මක සංඛ්‍යා වන බැවින් ඒවායේ ප්‍රධාන සාධක ඇතුළත් වන්නේ 2, 3, 5 පමණි.
1 සාමාන්‍යයෙන් අවලස්සන අංකයක් ලෙස සලකනු ලැබේ.

උදාහරණයක්

6
true

පැහැදිලි කිරීම: 6 = 2 × 3

14
false

පැහැදිලි කිරීම: 14 = 2 × 7
14 තවත් අවලස්සන සාධකයක් වන බැවින් එය අවලස්සන නොවේ.

ප්රවේශය

අවලස්සන සංඛ්‍යාවක් වීමට එහි කිසිවක් අඩංගු නොවිය යුතු බව ගැටළු ප්‍රකාශයෙන් පැහැදිලි වේ ප්‍රධාන සාධක 2,3 සහ 5 හැර.

සෑම සංඛ්‍යාවක්ම සෑදී ඇත්තේ ප්‍රාථමික සංඛ්‍යා එකක හෝ වැඩි ගණනක (1 හැර) සමහර බලයන්ගේ නිෂ්පාදිතයෙන් බව අපි දනිමු. එම නිසා අපට සංඛ්‍යාව එහි ප්‍රධාන සාධකවලට සාධකගත කළ හැකි අතර එහි 2,3 සහ 5 හැර වෙනත් ප්‍රාථමික සංඛ්‍යා අඩංගු වේද යන්න සොයා බැලිය හැකිය.

සාධකකරණයෙන් අදහස් වන්නේ ප්‍රාථමික අංකයකට සංඛ්‍යාවක් සම්පූර්ණයෙන් බෙදිය හැකි නම් එය එම නිශ්චිත සංඛ්‍යාවේ සාධකයක් වනු ඇත. එම නිසා සංඛ්‍යාව 2 න් බෙදිය හැකි නම්, අපට දී ඇති සංඛ්‍යාව 2 න් බෙදිය හැකි අතර එමඟින් සාධකය 1 හි 2 වන බලය ඉවත් කළ හැකිය.
ඒ හා සමානව අපි 3 සහ 5 යන සාධකවල සියලු බලයන් ඉවත් කරන්නෙමු.

2,3 සහ 5 හැර වෙනත් ප්‍රධාන සාධක සංඛ්‍යාවක් එම සංඛ්‍යාවේ අඩංගු නම්, දැනට ඉතිරිව ඇති සංඛ්‍යාව 1 ට සමාන නොවන බව දැන් පැහැදිලිය.
එබැවින් අවසානයේ අංක 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 (ලොග් (n)): අපි නැවත නැවතත් ලූපය 2, 3 සහ 5 කින් බෙදන්නෙමු. එබැවින් කාල සංකීර්ණතාව O (ලොග් (n)) වනු ඇත, මෙහි n යනු දී ඇති අංකය වේ.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1): අපි කිසිදු අමතර ඉඩක් භාවිතා නොකරමු, එබැවින් එය නියත ය.