Liệt kê thừa số nguyên tố

Hôm nay, mình mới thử thêm chức năng hiển thị mã lập trình, điều mà bấy lâu nay mình thử hoài không được. Lúc trước thử trên bo-blog vì nghe nói vì có sẵn plugin, nhưng vì chưa học php và mysql nên mình làm cả tháng cũng chưa xong.
Thực ra đây là bài toán đơn giản. Đầu tiên mình kiểm tra tính chia hết cho 2,3,5. Sau đó dùng bước nhảy, nhảy 2 rồi nhảy 4 vì nhận xét thấy rằng một số chia cho 6 chỉ dư 5 hoặc 1.
Sau đó mình dùng một biến để lưu lại kết quả đã chia. Nếu luu>1 hiển thị số ^ lũy thừa.


#include
#include
#include
//--------------------------------
long nhap();
char luu(long i, long *n);
void xuat(char luu,long nt,long n);
//--------------------------------
void main()
{
long n,nt;
char tg,tang;
clrscr();
n=nhap();
cout<<n<<"=";
if (n==1) return;
for (nt=2;nt<=3;nt++)
{
tg=luu(nt,&n);
if (tg>0) xuat(tg,nt,n);
}
tang=4;
nt=5;
/*
Neu n la so NT thi phep chia 6 chi du 1 va 5 do da kt
tinh chia het cho 2;3.
*/
while (nt<=sqrt(n))
{
tg=luu(nt,&n);
if (tg>0) xuat(tg,nt,n);
tang=6-tang;
nt+=tang;
}
if (n!=1) cout<1 chac chan n la so nt.
getch();
}
//--------------------------------
long nhap()
{
long tg;
cout<<"Moi ban nhap mot so lon hon 0: ";
cin>>tg;
while (tg<=0)
{
cout<<"Moi ban nhap lai: ";
cin>>tg;
}
return tg;
}
//------------------------------
char luu(long i, long *n)
{
char tg=0;
while (*n%i==0) //dem so lan chia het cua 1 so nt
{
tg++;
*n/=i;
}
return tg;
}
//------------------------------
void xuat(char luu,long nt,long n)
{
if (luu==1)
cout<<nt;
else cout<<nt<<"^"<<(int)luu;
if (n!=1) cout<<" * ";//Neu n=1 thi khong con so nt nao
}

Nhận xét

Bài đăng phổ biến từ blog này

Kinh nghiệm tạo biểu đồ Use Case

PHÉP TOÁN XOR

Phần mềm hỗ trợ vẽ bản đồ tư duy trên máy tính

Power Designer 12.5