n तक सभी प्राकृत संख्याओं को जोड़ना, जो कि X या Y से विभाज्य हैं, उन सभी संख्याओं का चयन करना है जो X या Y से विभाज्य हैं और उन्हें एक चर में जोड़ना है जो योग को संग्रहीत करता है।
पहली N प्राकृतिक संख्याओं का योग ज्ञात करने के लिए जो X या Y से विभाज्य हैं, दो विधियाँ हैं -
- लूप और कंडीशनल स्टेटमेंट का उपयोग करना
- फ़ॉर्मूला का उपयोग करना
विधि 1 - लूप और कंडीशनल स्टेटमेंट का उपयोग करना
यह विधि एक लूप का उपयोग करती है जो n संख्याओं तक गिना जाता है और उन संख्याओं का चयन करता है जो X या Y से विभाज्य हैं और उन्हें जोड़ते हैं और प्रत्येक पुनरावृत्ति पर एक चर में सहेजते हैं।
उदाहरण कोड
#include <stdio.h> int main(void) { int n = 54; int x = 2 ; int y = 5; int sum = 0; for(int i = 0; i<= n; i++) { if(i%x == 0 || i% y == 0) sum = sum + i; } printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum); return 0; }
आउटपुट
sum of 54 natural numbers divisible by 2 and 5 is 881
विधि 2 - सूत्र का उपयोग करना,
यह विधि किसी संख्या से विभाज्य पहली n संख्या का योग ज्ञात करने के लिए सूत्र का उपयोग करती है।
इसे सूत्र - SN/X =((N/X)/2) * (2 * X + (N/X - 1) * X)
का उपयोग करके पाया जा सकता है।इस सूत्र का प्रयोग करके x से विभाज्य n प्राकृत संख्याओं का योग ज्ञात किया जाता है - S n/x =((n/x)/2) * (2 * x + (n/x - 1) * x)
इस सूत्र का प्रयोग करके y से विभाज्य n प्राकृत संख्याओं का योग ज्ञात किया जाता है - S n/y =((n/y)/2) * (2 * y + (n/y - 1) * y)
अब, इस सूत्र का प्रयोग करके x और y से विभाज्य n प्राकृत संख्याओं का योग ज्ञात किया जाता है:S n/x*y =((n/(x*y)/2) * (2 * (x*y) + (n/(x*y) - 1) * (x*y))
अब, हम x का योग और y का योग जोड़ देंगे और x*y का योग घटा देंगे जो दो बार जोड़ दिया जाता है।
उदाहरण कोड
#include <stdio.h> int main() { int n = 54; int x = 2, y = 5; int Sx, Sy, Sxy, sum; Sx = ((n / x)) * (2 * x + (n / x - 1) * x) / 2; Sy = ((n / y)) * (2 * y + (n / y - 1) * y) / 2; Sxy= ((n / (x * y))) * (2 * (x * y) + (n / (x * y) - 1) * (x * y))/ 2; sum = Sx + Sy - Sxy; printf("sum of %d natural numbers divisible by %d and %d is %d" ,n,x,y,sum); return 0; }
आउटपुट
sum of 54 natural numbers divisible by 2 and 5 is 881
दूसरी विधि बेहतर है क्योंकि यह किसी भी लूप का उपयोग नहीं करती है जिसका अर्थ है बेहतर समय जटिलता। लेकिन अगर इनपुट केस पहले से छोटे हैं तो इसका भी इस्तेमाल किया जा सकता है। लेकिन बड़े इनपुट मामलों के लिए दूसरा तरीका सबसे अच्छा विकल्प नहीं है।