Mình mới suy nghĩ ra được cách tìm "Số nguyên tố" nhanh không phải học thuộc bài code máy móc như cách trước đây là phải gọi biến "dem"!! Mình làm như sau:
- Cho vòng "for" chạy từ "i đến căn(n)" nếu phát hiện có giá trị i nào đó..... bị n chia hết thì ngừng vòng lặp ngay ( break; ) và thông báo "n không là số nguyên tố!" . Tất nhiên là cách này tiết kiệm được chút thời gian so với cách gọi biến "dem" (vòng for phải chạy từ 1->n và mất công hơn nếu i=2 mà n đã chia hết cho i rồi......... mà for chứ chạy và "dem" tới n phải ko?.
- Tuy nhiên, tất cả không phải dễ dàng như mình đã nghĩ! Ở TH nếu "n là số nguyên tố" thì sao? Các bạn suy nghĩ trước đi rồi đọc sau nhé!
uk, chỉ còn cách duy nhất là cho điều kiện "n là số nguyên tố vào vòng lặp for" và gán cho nó thêm một điều kiện nữa! Xong, có vẻ như đã hoàn hảo rồi! Nhưng mọi việc lại khó khăn hơn khi các giá trị "9, 15, 25, 35" có là số nguyên tố hay không thì chương trình lại không thông báo, các giá trị khác vẫn hoạt động bình thường. Lỗi ở đâu thì mình ko tìm ra được. Đoạn code của mình đây, mong các bạn giúp mình hoàn thành ý tưởng này với!!
Các bạn chú ý chỉ nhập các số >3 thôi! Các trường hợp <=3 mình sẽ xét riêng ngoài vòng for!
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
int i, n;
scanf("%d",&n);
for(i=2; i<=sqrt(n); i++)
{
if(n%i == 0)
{
printf("%d khong la so nguyen to ", n);
break;
}
if(i = int(sqrt(n)))
{
if(n%i != 0)
printf("%d la so nguyen to ",n);
}
}
getch();
}
- Cho vòng "for" chạy từ "i đến căn(n)" nếu phát hiện có giá trị i nào đó..... bị n chia hết thì ngừng vòng lặp ngay ( break; ) và thông báo "n không là số nguyên tố!" . Tất nhiên là cách này tiết kiệm được chút thời gian so với cách gọi biến "dem" (vòng for phải chạy từ 1->n và mất công hơn nếu i=2 mà n đã chia hết cho i rồi......... mà for chứ chạy và "dem" tới n phải ko?.
- Tuy nhiên, tất cả không phải dễ dàng như mình đã nghĩ! Ở TH nếu "n là số nguyên tố" thì sao? Các bạn suy nghĩ trước đi rồi đọc sau nhé!
uk, chỉ còn cách duy nhất là cho điều kiện "n là số nguyên tố vào vòng lặp for" và gán cho nó thêm một điều kiện nữa! Xong, có vẻ như đã hoàn hảo rồi! Nhưng mọi việc lại khó khăn hơn khi các giá trị "9, 15, 25, 35" có là số nguyên tố hay không thì chương trình lại không thông báo, các giá trị khác vẫn hoạt động bình thường. Lỗi ở đâu thì mình ko tìm ra được. Đoạn code của mình đây, mong các bạn giúp mình hoàn thành ý tưởng này với!!
Các bạn chú ý chỉ nhập các số >3 thôi! Các trường hợp <=3 mình sẽ xét riêng ngoài vòng for!
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
int i, n;
scanf("%d",&n);
for(i=2; i<=sqrt(n); i++)
{
if(n%i == 0)
{
printf("%d khong la so nguyen to ", n);
break;
}
if(i = int(sqrt(n)))
{
if(n%i != 0)
printf("%d la so nguyen to ",n);
}
}
getch();
}
Comment