Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình kiểm tra xem một số có phải là số Proth hay không trong C ++

Được đưa ra với một số ‘n’ và nhiệm vụ là xác định xem số nguyên dương đã cho có phải là một proth hay không và hiển thị kết quả dưới dạng đầu ra.

Số Proth là gì?

Số thứ tự được đưa ra bởi

$$ N =k \ cdot \:2 ^ {n} + 1 $$

Trong đó, n là số nguyên dương và k là số nguyên dương lẻ

Một vài số proth đầu tiên được đưa ra dưới đây -

3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97.......

Đầu vào

number: 17

Đầu ra

its a proth number

Đầu vào

number: 18

Đầu ra

its not a proth number

Phương pháp tiếp cận được sử dụng trong chương trình nhất định như sau

  • Nhập số để kiểm tra tình trạng

  • Áp dụng công thức đã cho để kiểm tra xem nó có phải là số thứ tự hay không

  • Nếu điều kiện giữ đúng, hãy in số thứ tự của nó

  • Nếu điều kiện không có giá trị true, hãy in nó không phải là số thứ tự

Thuật toán

Step 1→ declare function to calculate power of 2
   bool isPower(int num)
      return (num && !(num & (num - 1)))
Step 2→ Declare function to check if a number is a proth number or not
   bool isProth(int num)
      declare int k = 1
      While (k < (num / k))
         IF (num % k == 0)
            IF (isPower(num / k))
               return true
            End
            Set k = k + 2
         End
      End
      return false
Step 3→ In main()
   Declare int num = 17
   IF (isProth(num - 1))
      Print "its a proth number"
   End
   Else
      Print "its not a proth number"
End

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//function to calculate power of 2
bool isPower(int num){
   return (num && !(num & (num - 1)));
}
//function to check if a number is a proth number
bool isProth(int num){
   int k = 1;
   while (k < (num / k)){
      if (num % k == 0){
         if (isPower(num / k))
            return true;
      }
      k = k + 2;
   }
   return false;
}
int main(){
   int num = 17;
   if (isProth(num - 1))
      cout << "its a proth number";
   else
      cout << "its not a proth number";
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

its a proth number