cac ban jup dum minh bai nay nhe,viet chuong trinh bang ham nha.De bai day:cho so nguyen duong n.Kiem tra so nguyen duong n co phai la so nguyen to k?
cac ban jup dum minh bai nay nhe,viet chuong trinh bang ham nha.De bai day:cho so nguyen duong n.Kiem tra so nguyen duong n co phai la so nguyen to k?
số ước của nó từ 2 tới n%2 bằng 0 (có thể lấy đến n-1 hoặc có người giải theo cách lấy đến sqrt(n) ) ...bạn muốn theo cách nào?
bán phapluat.com => info@phapluat.com
cua ban day. tét lai thu nhe
PHP Code:
#include <conio.h>
#include <stdio.h>
#include <math.h>
int nguyento(int n)
{
int i,kt=1;
if (n==1 || n==2) kt=1;
for (i=2;i<=(int)sqrt(n);i++)
{
if (n%i==0)
{
kt=0;
break;
}
else kt=1;
}
return kt;
}
int main()
{
int n;
printf ("Moi nhap n: ");
scanf ("%d",&n);
if (nguyento(n)) printf ("%d la so nguyen to!",n);
else printf ("%d khong la so nguyen to!",n);
getch();
return 0;
}
Được sửa bởi minhhieuit lúc 19:32 ngày 19-01-2010
#include<stdio.h>
#include<conio.h>
int nt(int n)
{
int dem=0;
for(int i=2;i<n;i++)
if(n%i==0)
dem++;
return dem;
}
void main(){
int n;
printf("Nhap vao mot so nguyen duong: ");
scanf("%d",&n);
if(nt(n)==0)
printf("so vua nhap la so nguyen to");
else
printf("So vua nhap khong la so nguyen to");
getch();
}
Anh minhhieu giải thích rõ cho em đc ko ạ:S
cai nay don gian ma ban
ma minh la sv nam dau neu ma dung ra thi minh cung bang tuoi hoac it tuoi hon ban do.
day la thuat toan de kiem tra n co phai la so nguyen to khong ban ak.PHP Code:
for (i=2;i<(int)sqrt(n);i++)
nhu ta da biet, so nguyen to la so ma chi chia het cho chinh no va 1.
minh bat dau cho mot bien i chay tu 2 den can bac hai cua n; neu ma n chia het cho i thi n khong la so nguyen to. phai chay tu i=2 vi neu chay tu i=1 thi n se chia het cho i va gia tri tra ve khong con dung nua. dung ra thi i chay tu 2 den n nhung ma ta chi can kiem chay den can bac hai cua n hoac chay den n/2 la duoc ban ak.
Được sửa bởi minhhieuit lúc 19:33 ngày 19-01-2010
#include<conio.h>
#include<stdio.h>
#include<math.h>
int kiemtra(int n);
void main()
{
int n;
printf("\n nhap n:=");
scanf("%d",&n);
printf("%d",kiemtra(n));
getch();
}
int kiemtra(int n)
{
int i;
for(i=2;i<=sqrt (n) ;i++)
{
if(n%i==0)
printf("%d la so nguyen to",n);
else
printf("%d khong la so nguyen to",n);
break;
return 0;
}
//ban Hieu oi sao phai co dieu kien if(n==1||n==2),k co dc k va k dung lenh break ma dung lenh khac dc k?bai cua minh sai j?chua jup minh nhe
giải thuật cũng đơn giản thui mà, ko cần phải for rùi break cho mất công.
đầu tiên kiểm tra số n có phải là 1 trong các số sau (1,2,3,5) đây là các số nguyên tố nhỏ nhất.
Nếu n không phải là 1 trong các số đó thì sẽ lần lượt kiểm tra coi n có chia hết cho 2, cho 3, cho 5 ko, nếu 1 trong 3 trường hợp xảy ra thì n không phải là số nguyên tố, ngược lại thì n là số nguyên tố.
1 số chắc chắn sẽ chia hết cho chính nó và 1 rùi do vậy ta chỉ cần kiểm tra thêm nó có chia hết cho số khác hay ko mà ở đây 2,3 và 5 là 3 ước số chia nhỏ nhất.
bạn noname1990
Cái sai đầu tiên của bạn là:
nếu điều kiện trên xảy ra thì n không là số nguyên tố bạn à.PHP Code:
if(n%i==0)
printf("%d la so nguyen to",n);
Với chương trình của bạn khi nhập vào 1 và 2 sẽ không cho kết quả. đa số chương trình các bạn viết khi thử với 1 và 2 kết quả bị sai vì thế mình đặt điều kiện mặc định cho 1 và 2 là số nguyên tố.
Trong hàm kiểm tra số nguyên tố theo mình nghĩ thì nên dùng lệnhvì một khiPHP Code:
break;
thì chắc chắn n không là số nguyên tố rồi nên dừng luôn vòng lặp ở đó luôn bạn à.PHP Code:
n%i==0;
Của bạn đây:
không hiểu sao mình nhập n=3 nó không chạy ấy. thế nên mình đặt 3 vào luôn. để mình xem lại xem sao?PHP Code:
#include<conio.h>
#include<stdio.h>
#include<math.h>
int kiemtra(int n)
void main()
{
int n;
printf("\nnhap n:=");
scanf("%d",&n);
kiemtra(n);
getch();
}
int kiemtra(int n)
{
int i;
if (n==1 || n==2 ||n==3) printf("%d la so nguyen to",n);
for(i=2;i<=sqrt (n) ;i++)
{
if(n%i==0)
{
printf("%d khong la so nguyen to",n);
break;
}
else
printf("%d la so nguyen to",n);
}
}
Được sửa bởi minhhieuit lúc 17:04 ngày 19-01-2010
Bookmarks