30/09/2018, 20:11
Bài tập tổng hợp về số nguyên tố
Viết chương trình liệt kê các số nguyên có 7 chữ số thoả mãn:
a) Là số nguyên tố.
b) Tổng các chữ số của số đó là một số nguyên tố.
c) Các chữ số từ trái qua phải tạo thành dãy không giảm.
Anh chị giúp em tìm lỗi sai với!!!em cảm ơn!
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
int kiemtrasonguyento(int n);
int tonglasonguyento(int n);
int daykhonggiam(int n);
int main()
{
int i;
for( i = 1000000 ; i<=9999999;i++)
{
if ( kiemtrasonguyento(i)==1 && tonglasonguyento(i)==1)
{
tonglasonguyento(i);
printf("%d ",i);
}
}
return 0;
}
int kiemtrasonguyento(int n)
{
if(n==0 || n==1 ) return false;
if(n==2 || n==3 ) return 1;
for(int i=2;i<=sqrt(n);i++)
{
if(n % i == 0) return false;
else return 1;
}
}
int tonglasonguyento(int n)
{
int tong,i;//
tong=n/1000000;//
for(i=6;i>=0;i--)//
{
tong=tong + ((n % (int)pow(10,i) ) / pow(10,i));
} //
kiemtrasonguyento(tong);
}
int daykhonggiam(int n)
{
int i;
for(i=0;i<=6;i++)
{
if( (((n%(int)pow(10,i))/pow(10,i)) < ((n%(int)pow(10,i+1))/(int)pow(10,i+1))) && (((n%(int)pow(10,6))/pow(10,6)) < n/pow(10,6)))
return 1;
else return false;
}
}
Bài liên quan
Thứ nhất bạn cần xem lại về kiểu dữ liệu…
Ở đây nên để kiểu
long
.Thứ 2 là trong hàm
kiemtrasonguyento
, nếun % i == 0
thìreturn 0
, rồi ra ngoài vòng lặp mớireturn 1
. Nếu đểreturn 1
như thế thì mọi số lẻ sẽ là số nguyên tố.còn 2 hàm kia mình thấy hơi loằng ngoằng. mình sửa lại như sau:
anh giải thích giùm em hàm daykhonggiam với
Để kiểm tra tổng là ngt trước kt nguyên tố nhá