2012-05-08 15 views
6

मैं बीजगणित के एक पूर्णांक का वर्गमूल को आसान बनाने में, नहीं यह संख्यानुसार की गणना है, यानी √80020√2, नहीं 28.2842712474619 होना चाहिए चाहते हैं।सरल वर्ग जड़ों बीजगणित

मैं प्रोग्रामिंग :(

+11

क्या आप मानव द्वारा किए गए कदमों को लिख सकते हैं? यह पहला काम है। – GManNickG

+1

क्या आपका मतलब कुछ सिंबल सिस्टम (मॉड्यूल) है? कृपया http://code.google.com/p/sympy/ – wuliang

उत्तर

29

गुणनखंड जड़ के नीचे नंबर के माध्यम से इस को हल करने के लिए किसी भी तरह नहीं मिल सकता है, कारक है कि जोड़ों में बाहर आने और जड़ के नीचे आराम छोड़ बाहर लेने।

√800 = √ (2 एक्स 2 एक्स 2 एक्स 2 एक्स 5 एक्स 2 एक्स 5) = √ (2 एक्स 2 x 5 एक्स 2) = (2 एक्स 2 एक्स 5) √2 = 20 √2।

और पूर्णता के लिए, यहां कुछ सरल कोड ई:

outside_root = 1 
inside_root = 800 
d = 2 
while (d * d <= inside_root): 
    if (inside_root % (d * d) == 0): # inside_root evenly divisible by d * d 
    inside_root = inside_root/(d * d) 
    outside_root = outside_root * d 
    else: 
    d = d + 1 

जब एल्गोरिदम समाप्त हो जाता है, तो बाहर_root और अंदर_root में उत्तर होता है।

यहाँ 800 के साथ रन:

inside outside d 
    800   1 2 # values at beginning of 'while (...)' 
    200   2 2 
    50   4 2 
    50   4 3 
    50   4 4 
    50   4 5 
     2  20 5 # d*d > 2 so algorithm terminates 
    ==  == 

जवाब 20√2 यहाँ अंतिम पंक्ति पर है।

+0

कूल पर एक नज़र डालें :) अपने कोड के लिए +1 – Sourav

+1

@ सौरव: बस +1? क्यों नहीं [एक हरा ✓] (http://stackoverflow.com/faq#howtoask)? आश्चर्यजनक सरल कोड के लिए – Johnsyweb

+1

+1! –

0
#include<stdio.h> 
#include<conio.h> 
int main() { 
    int i, n, n2, last, final; 
    last = 0, final = 1; 
    printf("Enter number to calculate root: "); 
    scanf("%d", & n); 
    n2 = n; 
    for (i = 2; i <= n; ++i) { 
     if (n % i == 0) { 
      if (i == last) { 
       final = final * last; 
       last = 0; 
      } else { 
       last = i; 
      } 
      n /= i; 
      i--; 
     } 
    } 
    n = n2/(final * final); 
    printf("\nRoot: (%d)^2 * %d", final, n); 
    getch(); 
    return 0; 
} 
संबंधित मुद्दे