(Wiki) Số chính phương hay còn gọi là số hình vuông là số tự nhiên có căn bậc 2 là một số tự nhiên, hay nói cách khác, số chính phương là bình phương (lũy thừa bậc 2) của một số tự nhiên khác.
Ví dụ:
- 4 = 2²
- 9 = 3²
- 1.000.000 = 1.000²
Vậy trong C thì sao:
ex: n = 4: 4 = sqrt(4) * sqrt(4)
hay
sqrt((float)4) <== là số thực = (int)sqrt((float)n)
2.00000 = 2
- hay
- gán i = sqrt(n): i * i = n hoặc pow(sqrt(n), 2) = n
- Sau đây là 1 số đoạn code cho những ý tưởng trên:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<stdio.h> #include<conio.h> #include<math.h> int main() { int i, n; do { printf("\nNhap n: "); scanf("%d", &n); if(n <= 0) printf("\nn phai > 0. Xin nhap lai !"); }while(n <= 0); /*Số chính phương là số mà kết quả khai căn bậc 2 là 1 số nguyên sqrt(4) = 2.00000 => ép về nguyên = 2 => vì 2.000 == 2 (true) => là số chính phương sqrt(5) = 2.23234 => ép về nguyên = 2 => vì 2.4324 != 2 (false) => không là số chính phương*/ if (n == sqrt((float)n) * sqrt((float)n)) // So sánh 2 số khi chưa ép về kiểu nguyên và số đã ép về kiểu nguyên { printf("\n%d La so chinh phuong", n); } else { printf("\n%d Khong la so chinh phuong", n); } getch(); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //1. n là số nhập vào //2. i = căn bậc hai của n //3. nếu i * i = n => chính phương //VD: 9 = 3^2 #include <stdio.h> #include <conio.h> #include <math.h> int main() { double n; double i; printf ("Nhap so nguyen duong n: "); scanf("%d", &n); i = sqrt(n); if (n == i*i) printf ("La so chinh phuong!"); else printf ("Khong la so chinh phuong!"); getch(); return 0; } |
