Paste
Pasted as C++ by registered user xujiayu ( 4 years ago )
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
//kiem tra chinh phuong
int n;
nhapthongtin:
do
{
printf("\nhay nhap vao so n : ");
scanf("%d",&n);
if(n <= 0)
{
printf("\nso ban nhap khong hop le xin hay nhap lai cam on!");
}
} while (n <= 0);
if (sqrt((double)n) == (int)sqrt((double)n))
{
printf("\nla so chinh phuong ");
}
else
{
printf("\nkhong phai la so chinh phuong");
}
/*so nguyen to la so bat dau tu 2 va chi co the chia het duy nhat cho 1 va chinh no
co rat nhieu cach giai tu cach do nhat den cach hay nhat
giai thuat & lap trinh cua thay le minh hoang */
/*cach 1 : ta di theo dung nghia cua so nguyen to chi chia het cho 1 va chinh no , thanh ra neu trong doan tu 2 cho den
nho hon no thi no se khong chia het cho so nao ca
vd: so n
n se goi la so nguyen to neu nhu trong doan tu 2 => n -1 thi n khong chia het cho so nao ca
vd: so 7 thi trong doan tu 2 => 6 so 7 khong chia het cho so nao ca => 7 la so nguyen to
vd : so 8 khong goi la so nguyen to vi chia het cho 2 , 4
cach chung minh 1 : cho vong lap for chay tu 2 => n -1 . neu gap 1 so nao bat ky ma n chia het cho no
=> khong thoa la nguyen to
*/
if (n < 2)
{
printf("\nkhong phai la nguyen to");
}
else
{
int check = 1;// true
int solanchaycach1 = 1;
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
check = 0;//false
break; //thoat ra
}
solanchaycach1++;
}
printf("\nso lan chay cua cach 1 la %d lan",solanchaycach1);
if (check == 1)
{
printf("\nla so nguyen to cach 1");
}
else
{
printf("\nkhong phai la so nguyen to cach 1");
}
}
/*
cach 2 : ta thay 1 so n se khong the nao chia het cho cac so trong doan tu n/2 + 1 cho toi n -1
=>cai tien cach 1 :ta chi can chay vong lap xet cac so chia het tu 2 toi n/2 la duoc roi
*/
if (n < 2)
{
printf("\nkhong phai la nguyen to");
}
else
{
int check = 1;// true
int solanchaycach2 = 1;
for (int i = 2; i < n/2; i++)
{
if (n % i == 0)
{
check = 0;//false
break; //thoat ra
}
solanchaycach2++;
}
printf("\nso lan chay cua cach 2 la %d lan",solanchaycach2);
if (check == 1)
{
printf("\nla so nguyen to cach 2");
}
else
{
printf("\nkhong phai la so nguyen to cach 2");
}
}
/*
cach 3: cai tien len tu cach 2 , ta thay khong can phai chay tu 2 cho toi n /2 ma chi can
chay cho toi sqrt(n) la duoc roi (toan hoc chung minh )
*/
if (n < 2)
{
printf("\nkhong phai la nguyen to");
}
else
{
int check = 1;// true
int solanchaycach3 = 1;
for (int i = 2; i < sqrt((double)n); i++)
{
if (n % i == 0)
{
check = 0;//false
break; //thoat ra
}
solanchaycach3++;
}
printf("\nso lan chay cua cach 3 la %d lan",solanchaycach3);
if (check == 1)
{
printf("\nla so nguyen to cach 3");
}
else
{
printf("\nkhong phai la so nguyen to cach 3");
}
}
/*
cach 4 : cai tien tu cach 3 va ta thay mot dieu sau : so 2 la so nguyen to chan duy nhat , ngoai ra
khong co so chan nao ngoai so 2 ma la so nguyen to
*/
if (n < 2)
{
printf("\nkhong phai la nguyen to");
}
else
{
int check = 1;// true
int solanchaycach4 = 1;
for (int i = 3; i < sqrt((double)n); i+=2)
{
if (n % i == 0)
{
check = 0;//false
break; //thoat ra
}
solanchaycach4++;
}
printf("\nso lan chay cua cach 4 la %d lan",solanchaycach4);
if (check == 1)
{
printf("\nla so nguyen to cach 4");
}
else
{
printf("\nkhong phai la so nguyen to cach 4");
}
}
//d: kiem tra tang dan giam dan va khong tang khong giam
int temp = n;
int checktang = 1;//co hieu
int checkgiam = 1;
while (temp > 9)
{
int chuso1 = temp % 10;//5
temp /=10;
int chuso2 = temp %10;//4
if(chuso1 <= chuso2)
{
checktang = 0;
//BREAK;
}
if(chuso1 >= chuso2)
{
checkgiam = 0;
}
}
if (checktang == 1 )
{
printf("\nso tang dan");
}
else if (checkgiam == 1)
{
printf("\nso giam dan");
}
else
{
printf("\nkhong tang khong giam");
}
getch();
return 0;
}
Revise this Paste