কম্পিউটার টিউটোরিয়াল

সি++ প্রোগ্রাম: এমন সংখ্যাগুলো প্রিন্ট করা যাতে কোনো দুটি ক্রমাগত সংখ্যা কো-প্রাইম (Co-prime) নয় কিন্তু প্রতিটি তিনটি ক্রমাগত সংখ্যা কো-প্রাইম


এই টিউটোরিয়ালে এমন সংখ্যাগুলো প্রিন্ট করার প্রোগ্রাম আলোচনা করা হবে যাতে কোনো দুটি ক্রমাগত সংখ্যা কো-প্রাইম (co-prime) নয় কিন্তু প্রতিটি তিনটি ক্রমাগত সংখ্যা কো-প্রাইম।

একটি পূর্ণসংখ্যা N দেওয়া থাকলে, ১০⁹-র চেয়ে ছোট Nটি পূর্ণসংখ্যা প্রিন্ট করতে হবে যাতে কোনো দুটি ক্রমাগত সংখ্যা কো-প্রাইম নয় কিন্তু তিনটি ক্রমাগত সংখ্যা কো-প্রাইম।

উদাহরণস্বরূপ, N = 4 হলে যেসব সংখ্যা দুটি শর্ত পূরণ করে:

6 15 35 14

উদাহরণ

#include <bits/stdc++.h> using namespace std; #define limit 1000000000 #define MAX_PRIME 2000000 #define MAX 1000000 #define I_MAX 50000 map map1; int b[MAX]; int p[MAX]; int j = 0; bool prime[MAX_PRIME + 1]; void sieve(int n){    memset(prime, true, sizeof(prime));    for (int p = 2; p * p <= n; p++){       if (prime[p] == true){          for (int i = p * p; i <= n; i += p)             prime[i] = false;       }    }    for (int p = 2; p <= n; p++){       if (prime[p]) {          b[j++] = p;       }    } } int gcdiv(int a, int b){    if (b == 0)       return a;    return gcdiv(b, a % b); } // প্রয়োজনীয় সিরিজ প্রিন্ট করা void print_elements(int n){    sieve(MAX_PRIME);    int i, g, k, l, m, d;    int ar[I_MAX + 2];    for (i = 0; i < j; i++){       if ((b[i] * b[i + 1]) > limit)          break;       p[i] = b[i];       map1[b[i] * b[i + 1]] = 1;    }    d = 550;    bool flag = false;    for (k = 2; (k < d - 1) && !flag; k++){       for (m = 2; (m < d) && !flag; m++){          for (l = m + k; l < d; l += k){             if (((b[l] * b[l + k]) < limit)                && (l + k) < d && p[i - 1] != b[l + k]                && p[i - 1] != b[l] && map1[b[l] * b[l + k]] != 1){                   if (map1[p[i - 1] * b[l]] != 1){                      p[i] = b[l];                      map1[p[i - 1] * b[l]] = 1;                      i++;                   }             }             if (i >= I_MAX) {                flag = true;                break;             }          }       }    }    for (i = 0; i < n; i++)       ar[i] = p[i] * p[i + 1];    for (i = 0; i < n - 1; i++)       cout << ar[i] << " ";    g = gcdiv(ar[n - 1], ar[n - 2]);    cout << g * 2 << endl; } int main(){    int n = 4;    print_elements(n);    return 0; }

আউটপুট

6 15 35 14

  1. বাইনারি ট্রিতে পরস্পর সংলগ্ন নয় এমন নোডগুলোর সর্বোচ্চ যোগফল (ডাইনামিক প্রোগ্রামিং সহ C++ প্রোগ্রাম)

  2. C++-এ মিডল স্কুল পদ্ধতিতে দুটি সংখ্যার GCD/HCF বের করার প্রোগ্রাম

  3. সি++-এ তিনটি বিন্দু সমরৈখিক (collinear) কিনা তা যাচাই করার প্রোগ্রাম

  4. C++-এ সার্কুলার অ্যারেতে আঁচবিক উপাদান ছাড়া সর্বোচ্চ যোগফল বের করার পদ্ধতি