kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 d3vdpro
d3vdpro
Question

Pătrat perfect și cub perfect

Există vreo funcție predefinită în c++ pentru a verifica dacă numărul este pătratul oricărui număr și la fel pentru cub...

8 2009-10-11T05:35:59+00:00 7
Valeriu
Valeriu 56173
Întrebarea editată 9 octombrie 2021 в 9:17
Douglas  B. Staple
Douglas B. Staple
Întrebarea editată 23 martie 2013 в 4:45
Programare
math
c++
algorithm
integer
integer-arithmetic
Popular videos
Patratul Perfect al unui numar natural. Cub perfect.
Patratul Perfect al unui numar natural. Cub perfect.
3 ani în urmă
LECȚIA 21. CUBURI PERFECTE Clasa 5 #cuburiperfecte #matematicaclasa5
LECȚIA 21. CUBURI PERFECTE Clasa 5 #cuburiperfecte #matematicaclasa5
3 ani în urmă
Cum arătăm că un număr nu este pătrat perfect? | Clasa a V-a   #patrateperfecte
Cum arătăm că un număr nu este pătrat perfect? | Clasa a V-a #patrateperfecte
2 ani în urmă
Pătrate perfecte | Matera.ro
Pătrate perfecte | Matera.ro
2 ani în urmă
Clasa a V-a - Pătrate perfecte. Cuburi perfecte
Clasa a V-a - Pătrate perfecte. Cuburi perfecte
2 ani în urmă
Problema 157: Pătrat perfect + Cub perfect #profuldemate #REZOLVteme #matematica #scoala
Problema 157: Pătrat perfect + Cub perfect #profuldemate #REZOLVteme #matematica #scoala
2 ani în urmă
lecții 87: CLASA 5+: PĂTRAT PERFECT - 12 exerciții diverse: te vei lămuri în multe privințe
lecții 87: CLASA 5+: PĂTRAT PERFECT - 12 exerciții diverse: te vei lămuri în multe privințe
2 ani în urmă
patrat perfect cub perfect exemple - profesorultau.ro
patrat perfect cub perfect exemple - profesorultau.ro
10 ani în urmă
Cuburi perfecte - Exercitiu rezolvat (nivel sporit de dificultate)
Cuburi perfecte - Exercitiu rezolvat (nivel sporit de dificultate)
3 ani în urmă
PĂTRATUL și CUBUL unui număr natural - Pătrate perfecte - Lecția 18
PĂTRATUL și CUBUL unui număr natural - Pătrate perfecte - Lecția 18
3 ani în urmă
1/2 Lectia 656 - Factor comun | Sume Gauss | Patrat si Cub perfect Operatii cu Puteri - Tema Clasa 5
1/2 Lectia 656 - Factor comun | Sume Gauss | Patrat si Cub perfect Operatii cu Puteri - Tema Clasa 5
7 ani în urmă
1185 Patrate perfecte Cand un nr NU este patrat perfect Factor comun Compararea unor puteri Clasa 5
1185 Patrate perfecte Cand un nr NU este patrat perfect Factor comun Compararea unor puteri Clasa 5
6 ani în urmă
Pătrate perfecte. Cuburi perfecte
Pătrate perfecte. Cuburi perfecte
1 an în urmă
Patrat perfect
Patrat perfect
7 ani în urmă
2/2 Lectia 656 - Factor comun | Sume Gauss | Patrat si Cub perfect Operatii cu Puteri - Tema Clasa 5
2/2 Lectia 656 - Factor comun | Sume Gauss | Patrat si Cub perfect Operatii cu Puteri - Tema Clasa 5
7 ani în urmă
« Anterior
Următor »
Această întrebare are 1 răspuns în engleză, pentru a le citi, vă rugăm să vă logați.
Solution / Answer
Chris Jester-Young
Chris Jester-Young
11 octombrie 2009 в 5:43
2009-10-11T05:43:38+00:00
Mai mult
Sursă
Editează
#9566379

Nu, dar este ușor de scris unul:

bool is_perfect_square(int n) {
    if (n < 0)
        return false;
    int root(round(sqrt(n)));
    return n == root * root;
}

bool is_perfect_cube(int n) {
    int root(round(cbrt(n)));
    return n == root * root * root;
}
Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
13
0
API inteligență artificială pentru parsarea concurenților
productapi.dev
Jesse Beder
Jesse Beder
11 octombrie 2009 в 5:41
2009-10-11T05:41:54+00:00
Mai mult
Sursă
Editează
#9566378

sqrt(x), sau în general, pow(x, 1./2) sau pow(x, 1./3).

De exemplu:

int n = 9;
int a = (int) sqrt((double) n);
if(a * a == n || (a+1) * (a+1) == n)  // in case of an off-by-one float error
    cout << "It's a square!\n";

Edit: sau în general:

bool is_nth_power(int a, int n) {
  if(n <= 0)
    return false;
  if(a < 0 && n % 2 == 0)
    return false;
  a = abs(a);

  int b = pow(a, 1. / n);
  return pow((double) b, n) == a || pow((double) (b+1), n) == a;
}
Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
6
0
API inteligență artificială pentru parsarea concurenților
productapi.dev
Douglas  B. Staple
Douglas B. Staple
23 martie 2013 в 4:41
2013-03-23T04:41:46+00:00
Mai mult
Sursă
Editează
#9566381

Nu, nu există funcții standard c sau c++ pentru a verifica dacă un întreg este un pătrat perfect sau un cub perfect.

Dacă doriți să fie rapid și să evitați utilizarea rutinelor float/double menționate în majoritatea răspunsurilor, atunci codificați o căutare binară folosind numai numere întregi. Dacă puteți găsi un n cu n^2 < m < (n+1)^2, atunci m nu este un pătrat perfect. Dacă m este un pătrat perfect, atunci veți găsi un n cu n^2=m. Problema este discutată aici

Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
algorithms - Efficient way to determine if a number is Perfect Square - Mathematics Stack Exchange
Is there an efficient method to determine if a very large number (300 - 600 digits) is a perfect square without finding its square root. I tried finding the square root but I realized that even for
math.stackexchange.com
2
0
 nikoo28
nikoo28
11 noiembrie 2012 в 12:17
2012-11-11T12:17:05+00:00
Mai mult
Sursă
Editează
#9566380

Încearcă asta:

#include<math.h>
int isperfect(long n)
{
    double xp=sqrt((double)n);
    if(n==(xp*xp))
        return 1;
    else
        return 0;
}
1
0
API inteligență artificială pentru parsarea concurenților
productapi.dev
 Deepeshkumar
Deepeshkumar
19 mai 2014 в 9:22
2014-05-19T09:22:24+00:00
Mai mult
Sursă
Editează
#9566382

Pentru identificarea pătratelor am încercat acest algoritm în java. Cu o mică diferență de sintaxă, îl puteți face și în c++. Logica este că diferența dintre două pătrate perfecte consecutive crește cu 2. Diff(1,4)=3 , Diff(4,9)=5 , Diff(9,16)= 7 , Diff(16,25)= 9..... și așa mai departe. Putem folosi acest fenomen pentru a identifica pătratele perfecte. Codul Java este,

    boolean isSquare(int num){
         int  initdiff = 3;
         int squarenum = 1;
         boolean flag = false;
         boolean square = false;
         while(flag != true){

                if(squarenum == num){

                    flag = true;
                    square = true;

                }else{

                    square = false;
                 }
                if(squarenum > num){

                    flag = true;
                }
            squarenum = squarenum + initdiff;
            initdiff = initdiff + 2;
   }
              return square;
 }  

Pentru a face identificarea pătratelor mai rapidă putem folosi un alt fenomen, suma recursivă a cifrelor pătratelor perfecte este întotdeauna 1,4,7 sau 9. Deci, un cod mult mai rapid poate fi...

  int recursiveSum(int num){
     int sum = 0;   
     while(num != 0){
     sum = sum + num%10;
     num = num/10;         
     }
     if(sum/10 != 0){         
        return recursiveSum(sum);     
     }
     else{
         return sum;
     }

 }
  boolean isSquare(int num){
         int  initdiff = 3;
         int squarenum = 1;
         boolean flag = false;
         boolean square = false;
         while(flag != true){

                if(squarenum == num){

                    flag = true;
                    square = true;

                }else{

                    square = false;
                 }
                if(squarenum > num){

                    flag = true;
                }
            squarenum = squarenum + initdiff;
            initdiff = initdiff + 2;
   }
              return square;
 }  

   boolean isCompleteSquare(int a){
    // System.out.println(recursiveSum(a));
     if(recursiveSum(a)==1 || recursiveSum(a)==4 || recursiveSum(a)==7 || recursiveSum(a)==9){

         if(isSquare(a)){

             return true;

         }else{
             return false;
         }

     }else{

         return false;

     }

  }
Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
0
0
Prashant Shubham
Prashant Shubham
22 august 2016 в 6:51
2016-08-22T18:51:30+00:00
Mai mult
Sursă
Editează
#9566383

Pentru pătrat perfect puteți face, de asemenea,:

if(sqrt(n)==floor(sqrt(n)))
    return true;
else
    return false;

Pentru cubul perfect se poate:

if(cbrt(n)==floor(cbrt(n)))
    return true;
else
    return false;

Sper să vă fie de ajutor.

Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
0
0
API inteligență artificială pentru parsarea concurenților
productapi.dev
 Gautham
Gautham
8 septembrie 2017 в 2:38
2017-09-08T14:38:36+00:00
Mai mult
Sursă
Editează
#9566384

Am putea folosi funcția truc din dotare -

#include <math.h>

// For perfect square
bool is_perfect_sq(double n) {
    double r = sqrt(n);
    return !(r - trunc(r));
}

// For perfect cube
bool is_perfect_cube(double n) {
    double r = cbrt(n);
    return !(r - trunc(r));
}
Valeriu
Valeriu 56173
Răspuns editat 9 octombrie 2021 в 9:17
0
0
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
Inessa bu
Înregistrat 1 lună în urmă
2
Denis Babushkin
Înregistrat 1 lună în urmă
3
asakuno asakuno
Înregistrat 1 lună în urmă
4
aldo salerno
Înregistrat 1 lună în urmă
5
Анна Батицкая
Înregistrat 1 lună în urmă
API inteligență artificială pentru parsarea concurenților
productapi.dev
RO
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire