C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

数値がC++で異常な数値であるかどうかを確認します


ここでは、数が異常な数であるかどうかがわかります。数の最大の素因数が数の平方根よりも厳密に大きい場合、その数は異常であると言われます。異常な数のいくつかは次のとおりです:2、3、5、6、7、10、11、13、14、15、17、19、20、21、22、23、26、28、29、31、33、34 、35、37、38、39、41、42、43、44、46

これを解決するために、最大の素因数を見つけて、その素因数が数の平方根より大きいかどうかを確認します。はいの場合、その番号は異常な番号です。それ以外の場合はそうではありません。

#include <iostream>
#include <cmath>
using namespace std;
int largestPrimeFactor(int num) {
   int max_prime = -1;
   while (num % 2 == 0) { //remove all 2s from the number
      max_prime = 2;
      num >>= 1;
   }
   for (int i = 3; i <= sqrt(num); i += 2) {
      while (num % i == 0) {
         max_prime = i;
         num = num / i;
      }
   }
   if (num > 2)
   max_prime = num;
   return max_prime;
}
bool isUnusual(int num) {
   int largePrimeFactor = largestPrimeFactor(num);
   if (largePrimeFactor > sqrt(num)) {
      return true;
   } else {
      return false;
   }
}
int main() {
   int n = 14;
   if (isUnusual(n)) {
      cout << n << " is an unusual number";
   } else {
      cout << n << " is not an unusual number";
   }
}

出力

14 is an unusual number

  1. C++で多数が11で割り切れるかどうかを確認します

    ここでは、数値が11で割り切れるかどうかを確認する方法を説明します。この場合、その数は非常に多い数です。したがって、数値を文字列として入力します。 数値が11で割り切れるかどうかを確認するには、奇数の位置の値の合計と偶数の位置の値の合計が同じである場合、その数値は11で割り切れます。 例 #include <bits/stdc++.h> using namespace std; bool isDiv11(string num){    int n = num.length();    long odd_sum = 0, even_sum =

  2. 数値が回文であるかどうかをチェックするC++プログラム

    回文数は、桁が逆になっても同じままです。つまり、値は変わりません。回文数は対称とも呼ばれます。例:数字12321、1551、11などは、数字が逆になっても変わらないため、回文です。 番号が回文であるかどうかをチェックするプログラムは次のとおりです。 例 #include<iostream> using namespace std; void palindrome(int num) {    int rev=0,val;    val = num;    while(num > 0) {