Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 완전제곱과 완전입방 모두인 N까지 숫자를 센다.


우리에게 숫자 N이 주어졌습니다. 목표는 N까지 숫자를 세는 것입니다. 이 숫자는 완전제곱뿐만 아니라 완전 큐브입니다. 예를 들어, 1, 64는 완전 정사각형과 완전 정육면체입니다.

sqrt()를 사용하여 제곱근을 계산하고 cbrt()를 사용하여 숫자의 세제곱근을 계산합니다.

예를 들어 이해합시다.

입력 - N=100

출력 − 완전한 정사각형과 정육면체인 숫자의 개수 − 2

설명 − 1과 64는 1에서 100까지의 숫자일 뿐이며 완전제곱수와 정육면체입니다.

입력 - N=5000

출력 −완전한 정사각형과 정육면체인 숫자의 개수 − 3

설명 − 1, 64 및 4096은 1에서 5000까지의 숫자일 뿐이며 완전제곱수와 정육면체입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수 N을 취합니다.

  • 함수 getCount(int n)는 N을 취하고 완전제곱과 완전 큐브 모두인 N까지의 숫자의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • i=1부터 i=N까지, floor(sqrt(i))==ceil(sqrt(i))이면 i는 완전제곱수입니다.

  • 이제 floor(cbrt(i))==ceil(cbrt(i))인지 확인하고, true이면 i도 완벽한 큐브입니다. 증분 수.

  • 루프가 끝나면 결과로 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int getCount(int n){
   int count=0;
   for(int i=1;i<=n;i++){
      if(floor(sqrt(i))==ceil(sqrt(i))){
         if(floor(cbrt(i))==ceil(cbrt(i))){
            count++;
            //cout<<i<<" ";
         }
      }
   }
   return count;
}
int main(){
   int N=100;
   cout<<endl<<"Numbers upto N that are perfect squares and perfect cubes:"<<getCount(N);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Numbers upto N that are perfect squares and perfect cubes:2