Bài này thì nên làm thế nào vậy ạ
Tìm số nguyên tố trong c
Bước 1: Viết 1 hàm kiểm tra số nguyên tố riêng.
Bước 2: Xử lý các vấn đề sau trong hàm main():
Cảm ơn mọi người ạ nhưng
Bài tập này e k đc dùng hàm ạ code của e như vậy mà lỗi thế thì phải làm sao ạ
Chạy sàng từ m đến n.
Như vậy là mình phải làm sao ạ
thuật toán xác đinh nt :
boolean chenk_nt(x)
check_nt := false;
kt := 1;
for i:=2 to x do
if (x mod i = 0) then kt++;
if (kt = 2) then check_nt := true;
còn trong hàm chính :
-> m;
-> n;
if m < n :
for i:=m to n do
if (check_nt(i) = true) then -> i,' la nguyen to';
dem ++;
xong
^ sqrt(x)
chớ
Này nhé: Nếu n không nguyên tố thì sẽ có p là số nguyên sao cho p | n. Vậy thì (n/p) | n vì (n/p) * p = n. Nếu p và n/p đều lớn hơn sqrt(n) (giả thiết) thì nhân lại sẽ ra một số lớn hơn n, vô lí. Vậy chạy tới sqrt là đủ.
ELI15: Với p nguyên dương (ít nhất) một trong hai số p và n/p không vượt quá sqrt(n). Có p thì cũng có luôn cả n/p, nên chia xuống kiểu gì thì chạy tới sqrt là hết.
Hình như thuật toán của bạn chưa tối ưu cho lắm:
bool CheckPrimeNumber(int number)
{
if (number < 2)
return false;
else if (number == 2)
return true;
else if (number & 0)
return false;
else {
for (int i = 3; i <= sqrt(number); i += 2)
if (number % i == 0)
return false;
return true;
}
}
code của e nó như vậy thì sao lại k liệt kê ra được các số nguyên tố trong khoảng m, n vậy ạ nó chạy ra tùm lum ạ mn chỉ giúp e đc k
#include <stdio.h>
#include <math.h>
int main()
{
int m, n, i, a;
printf("Nhap m:\n m=", m);
scanf("%d", &m);
printf("Nhap n:\n n=", n);
scanf("%d", &n);
if(m<n)
{
for ( i =m; i<=n; i++)
{
for ( a = 2; a<=(sqrt(i)); a++)
{
if (i % a != 0)
{
printf("Day la so nguyen to %d \n", i);
}
else
{
printf("Day khong phai so nguyen to %d \n", i);
}
}
}
}
else{
printf("Khong ton tai");
}
return 0;
}
ký hiệu j vậy anh, e chưa thấy bao giờ
p chia hết n. Nếu viết n chia hết cho p thì phải dùng dấu ba chấm dọc nên sách toàn viết thế này.
Đầy đủ hơn: Nếu n là hợp số thì giả sử ta tìm được 1 ước p < B. Vậy ước còn lại là n*(1/p) > n*1/B = n/B. Để không bị sót hay thừa thì n/B = B hay B = sqrt(n).