Posts

একটি ফ্যাক্টরিয়াল নাম্বার এ কয়টি সংখ্যা আছে

  -প্রবলেমঃ  একটি নাম্বার N দেওয়া থাকবে। ঐ নাম্বার N! কয়টি নাম্বার আছে সেটি বের করতে হবে। ব্রোথ-ফোর্স সলিউশনঃ নরমালি যদি আমাদের যদি এই প্রবলেম সলিশন করতে বলা হয় তাহলে আমাদের চিন্তুা অনুযায়ী যা করি তা হচ্ছে: #include <bits/stdc++.h> using namespace std ; int factorialDigit ( int n ) { long long fact = 1 ; for ( int i = 2 ; i <= n ; i ++ ) { fact *= i ; } int res = 0 ; // Number of digit of n! while ( fact ) { // Loop until fact becomes 0 res ++ ; fact /= 10 ; // Remove last digit } return res ; } int main () { int n ; cin >> n ; cout << factorialDigit ( n ) << endl ; } কিন্তু এই কোড টা কাজ করবে N<=20 । যদি N>=20 থেকে বেশি নেই তাইলে long long ব্যবহার করলে overflow হবে। তাহলে কি আমরা বিগ ইন্টিজার ব্যবহার করতে পারি? লগারিদম এর মাধ্যমে ফ্যাক্টরিয়ালের সংখ্যা বের করা: নিচে কিছু লগারিদম ভ্যালু দিয়ে নাম্বার বের করা হয়...

প্রাইম ফ্যাক্টরাইজেশন বের করার জন্য কিছু কোড

প্রাইম ফ্যাক্টরাইজেশন বের করার জন্য  এই কোডটা আমার কাছে অনেক সহজ মনে হয়। তবে এটা বড় সংখ্যার ক্ষেত্রে  সিভ অব ইরাথোসথেনেস এর মত কাজ করে। #include <bits/stdc++.h> #define ll long long using namespace std ; bool is_prime ( long n ) { if ( n < 2 ){ return false ; } for ( long i = 2 ; i * i <= n ; i ++ ) { if (( n % i ) == 0 ){ return false ; } } return true ; } int main () { long num ; cin >> num ; cout << "prime factor number are " << num << ": " ; for ( int i = 0 ; i <= num ; i ++ ){ if ( is_prime ( i ) && num % i == 0 ){ cout << i << ' ' ; } } } #কোড 2: #include <bits/stdc++.h> using namespace std ; void prime_factor ( int n ) { while ( n % 2 == 0 ) { printf ( "%d " , 2 ); n = n /...