PHP Code:
ham nay kha nhanh khi kiem tra voi 1 so la so kha lon nay ban:
int Is_prime(int x)
{
if(x<=1)
return 0;
if(x==2||x==3||x==5||x==7)
rerturn 1;
if(x%2==0||x%3==0||x%5==0||x%7==0)
return 0;
for(int i=5;i<=(int)sqrt((long)x);i+=2)
if(i%2==0)
return 0;
return 1;
}
neu khong chay duoc thi trong vong lap for ban sua lai la for(int i=5;i<=n/2;i+=2)
la chay ong dinh < ham sqrt trong c va c++ bat buoc bien phai la kieu long nen ban co the ep kieu truoc.
thuat toan tren dua vao dinh nghia: so nguyen to la so chi chia het cho 1 va chinh no ne viec kiem tra chia het cho 2,3,5,7 se nhanh hon la su dung vong lap for(; ;)
chuc vui
PHP Code:
ban xem lai cach giai pt bac hai di:
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
clrscr();
float a,b,c,d,x;
printf("nhap a:=");
scanf("%f",&a);
printf("nhap b:=");
scanf("%f",&b);
printf("nhap c:=");
scanf("%f",&c);
if(a==0)
if(b==0)
printf("ptvn");//neu c cung bang 0 thi phuong trinh co vo so nghiem chu
else
x=-c/b;
else
d=(b*b)-(4*a*c);
if(d<0)
printf("ptvn");
else
{
(float)x=(float)((-b+sqrt(d))/(2*a));//phai dung 2 bien de luu hai ket qua khac nhau
(float)x=(float)((-b-sqrt(d))/(2*a));
}
printf("x=%f,x=%f",x,x);
getch();
}
co the viet noi dung ham tinh toan nhu the nay
void GPT(float a,float b,float c)
{
if(a==0)
{
if(b==0)
if(c==0)
printf("\nphuong trinh co vo so nghiem");
else
printf("\nphuong trinh co nghiem don x=:\t%f",-c\b);
}
else
{
long D=(long) b*b-4*a*c;
if(d<0)
printf("\nphuong trinh vo nghiem\n");
else
{
if(d==0)
printf("\nphuong trinh co nghiem kep x=:\t%.3g",(-b/2/a));
else
{
printf("\nphuong trinh co hai nghiem phan biet:\n");
printf("x1=:\t%.3g",((-b+sqrt(D))/2/a));
printf("x2=:\t%.3g",((-b-sqrt(D))/2/a));
}
}
}
thanks bài viết bác nhưng này khó thực hành quá hà
này rất khó thực hành lắm
thuật toán của bạn trên trả về không đúng kiểu. nếu làm như bạn thì nên khai báo hàm kiểu void hơn nữa chưng trinh vẫn chạy sai. khi kiểm tra xong if(n==...) thì chương trình vẫn nhảy xuỗng lệnh for để kiêm tra tiếp mà không thoát:
code:
int nt(int n)//nếu trong c++ thì khai báo là const int &n để tăng tốc chương trình
{
if(n<=1)
return 0;//nếu không thỏa mãn thì thoats luôn
if(n==2||n==3||n==5)
return 1;
if(n%2==0||n%3==0||n%5==0)
return 0;
for(int i=3;i<=(int) sqrt((long)n);i+=2)
if(n%i==0)
return 0;
return 1;
}
kiểu bollean:
bool nt(int n)
{
if(n<=1)
return false;
.....tương tự trên. thay 1 bởi tru và 0 bởi false là đc
return true;
}
baì viết rất tốt thanksĐược gửi bởi minhhieuit;198***2
Bookmarks