-
07-09-2014, 01:14 PM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình làm bài về in các cạnh tam giác vuông < 500 sao cho các canh là nguyên nhưng giúp mình nhìn ra lỗi sai với
#include "iostream.h"
#include "math.h"
void pitago();
int songuyen(int x);
int main()
{
cout<<"
BO pitago co canh < 500 la :";
pitago();
}
int songuyen(int x)
{
int k=0;
for(int i=1;i<=x;i++)
if(x%i==0)
k++;
if(k==2)
return 1;
else
return 0;
}
void pitago()
{
int x, y, z;
for(x=1;x<500;x++)
for(y=1;y<500;y++)
for(z=1;z<500;z++)
{
if((songuyen(x) == 1) && (songuyen(y) ==1) && (songuyen(z) == 1))
if(x*x == y*y + z*z || y*y == x*x + z*z || z*z == y*y + x*x)
cout<<"pitago("<<x<<","<<y<<","<<z<<")"<<endl;
}
}View more random threads:
- lỗi must use c++ for the iostream. ai sửa giúp e voi
- mã đi tuần không dùng đệ qui
- Số nguyên tố và sắp xếp mảng
- Sắp xếp mảng 1 chiều tăng hoặc giảm dần
- help!!!lập trình C cho AVR
- Tìm tổng các số trên đường đi trên ma trận
- C++: hàm trong class Tam giác bị lỗi: hàm kiểm tra và hàm tính diện tích!
- Code bài Toán lớp đa giác, giúp mình sửa lỗi?
- hỏi về mảng 2 chiều:
- [ Solved ]Help với File
-
08-09-2014, 03:37 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cám ơn 2 bạn [IMG]images/smilies/biggrin.png[/IMG]. Mình đã nhìn ra lỗi của mình.
Và bạn Prog10 cho mình hỏi là bạn có đọc sách về CTDL và Giải Thuật nâng cao không
-
08-09-2014, 05:17 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cũng có, nhưng mình đọc được công thức này trong 1 quyển sách đại số [IMG]images/smilies/smile.png[/IMG]
-
08-09-2014, 05:59 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Theo ý mình, bạn hãy xóa bỏ hàm songuyen đi, trong vòng lặp bạn bỏ dòng kiểm tra if((songuyen(x) == 1) && (songuyen(y) ==1) && (songuyen(z) == 1)), mã sẽ chạy ổn thôi.
Có cách khác ngắn gọn hơn, nhưng cày cuốc với x,y,z cũng tạm ổn. Kết quả có lẽ là 2298 dòng ( chưa có kiểm tra hoán vị giữa x,y,z. Cái này là bài tập thêm cho bạn). Thân
-
08-09-2014, 06:17 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nhầm với số nguyên tố chăng?
p/s: Số nguyên tố ko thử như vậy đc ^^
Ta có CTNN của x^2+y^2=z^2 là:
x=u^2-v^2
y=2uv
z=u^2+v^2, u>v [IMG]images/smilies/smile.png[/IMG]
Thay vào và áp dụng HĐTĐN thì thấy đúng thôi.
- Vậy thì uv < 250 và áp dụng HĐTĐN thì x=(u-v)(u+v).
Nếu x<y<z<N thì cách này đạt O(N*sqrt(N)) phép chia.
- Hoặc cũng có thể thử viết z từ 5 đến 500** dưới dạng tổng 2 bình phương, cũng là O(N*sqrt(N))*, nhưng là phép lấy căn + bình phương.
Cách này hứa hẹn hơn vì có thể tối ưu hóa: Ta có thể tính sẵn các bình phương nhỏ hơn N.
Phân tích:
- Nếu duyệt theo x thì T ~ N*sqrt(N) phép chia VÀ ~N*logN phép nhân.
- Nếu duyệt theo z thì T ~ 2N*sqrt(N/2) lần tra bảng ( << phép chia) và 2N*sqrt(N/2) phép lấy căn + N*logN phép nhân.
Mà nhân < chia.
* Do tính chất gh nên chỉ cần O(N*sqrt(N/2)), hay nói cách khác là O(N*sqrt(N/2)) time và O(sqrt(N/2)) mem.
** z != 3 (mod 4) nên có thể unroll loop.
-
09-09-2014, 11:39 AM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Công thức thì mình nhớ mang máng nhưng còn cách tính độ phức tạp và thời gian . Bạn tính nhẩm nhanh quá.
xã hội vững mạnh, nhu cầu mặc đẹp của con người ngày càng cao. ngành công nghiệp thời trang cũng đang vững mạnh chóng vánh. những nhà máy gia công hàng may mặc chẳng thể đóng góp lặng thầm vào sự...
Tìm xưởng may gia công tại TP Hồ...