C# समारोह को स्वीकार पूर्णांक एन और वापस कम संख्या विभाजित कर सकते हैं कि नंबर 1 एन..

0

सवाल

मैं लिखने की जरूरत है, एक समारोह में ले जाता है कि एक तर्क के रूप में संख्या n और वापस (स्ट्रिंग के रूप में) सबसे कम उपलब्ध संख्या विभाजित कर सकते हैं कि सभी संख्या 1 से n करने के लिए. उदाहरण के लिए, यदि n=4 फिर समारोह वापसी करेंगे 12 के रूप में 12/4 12/3 12/2 12/1 पूरे कर रहे हैं की संख्या.

मैंने लिखा है के लिए एक समारोह है, जो कि ठीक काम करता है जब संख्या कम कर रहे हैं की तुलना में 19.. 19 से ऊपर के कंप्यूटिंग समय हो रही है बहुत लंबे समय तक. कर सकते हैं किसी ने मुझे एक संकेत दे करने के लिए कैसे बेहतर व्यवस्था के लिए इस समारोह में यह करने के लिए जल्दी

 public static string Smallest(int n)
        {
           
            int good = 0;//will hold number of times we got divide with no remianders
            int num = n;//smallest possible number is n
            while (true)
            {
                good = 0;
                for (int i=n; i>=1; i--)
                {
                    if (num % i ==0) good++;//meaning we got zero remainder for the divide
                    if (good == n) return num.ToString();//num of times we got zero remainders == n.

                }
                num++;
            }

        }


algorithm c# math
2021-11-23 18:05:46
3

सबसे अच्छा जवाब

1

आप के लिए जा रहे हैं की विशाल संख्या के लिए nयही कारण है कि , चलो का उपयोग करें BigInteger भीतरी के लिए अभिकलन. के रूप में Abhishek Pandey डाल दिया, हम गणना करना चाहिए LCMहै , जो प्राप्त किया जा सकता है के रूप में

 LCM(a, b) = a * b / GCD(a, b)

जहां सीजीडी है सबसे बड़ा आम भाजक

कोड:

using System.Numerics;

...

public static string Smallest(int n) {
  if (n < 1)
    throw new ArgumentOutOfRangeException(nameofn()); 

  BigInteger result = 1;

  for (int i = 1; i <= n; ++i) 
    result = result * i / BigInteger.GreatestCommonDivisor(result, i);

  return result.ToString();
}

डेमो:

  using System.Linq;
  using System.Numerics;

  ...

  var demos = string.Join(Environment.NewLine, Enumerable
    .Range(1, 20)
    .Select(n => $"{n,2} : {Smallest(n),20}"));

  Console.WriteLine(demos);
  Console.WriteLine();
  Console.WriteLine(Smallest(100));

परिणाम:

 1 :                    1
 2 :                    2
 3 :                    6
 4 :                   12
 5 :                   60
 6 :                   60
 7 :                  420
 8 :                  840
 9 :                 2520
10 :                 2520
11 :                27720
12 :                27720
13 :               360360
14 :               360360
15 :               360360
16 :               720720
17 :             12252240
18 :             12252240
19 :            232792560
20 :            232792560

69720375229712477164533808935312303556800
2021-11-23 18:37:03
1

मेरे तर्क:

  1. हम एक नंबर लेने के लिए - यह कम से कम संख्या क्या लौटा जा सकता है
  2. संख्या - 1 - अगर यह नहीं कर सकते हैं विभाजन के साथ कोई अनुस्मारक जोड़ने के लिए एन प्रारंभिक n

भूल नहीं करने के लिए अद्यतन संख्या के लिए प्रारंभिक जब 2 कदम है अनुस्मारक

जब तक आप यह नहीं मिलता सही मूल्य

2021-11-23 18:29:42
1

आप की जरूरत है खोजने के लिए एलसीएम (कम से कम आम एकाधिक) के सभी नंबरों से 1 to n.

यहाँ एक अच्छा उदाहरण है एलसीएम खोजने के लिए की एक सरणी के तत्वों. https://www.geeksforgeeks.org/lcm-of-given-array-elements/

आप बना सकते हैं एक सरणी के सभी संख्या 1 से n करने के लिए और इसे पारित करने के लिए इस समारोह के साथ ।

या

आप इसे संशोधित कर सकते हैं पारित करने के लिए केवल n और यह कारगर बनाने के लिए अपने मामले का उपयोग करें.

2021-11-23 18:22:57

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में