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;
    	
    }
}
Sáng Béo viết 22:25 ngày 30/09/2018

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ếu n % i == 0 thì return 0, rồi ra ngoài vòng lặp mới return 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:

int tonglasonguyento(long n)
{
    long tong = 0;
    while(n>0){
        tong = tong + n%10;
        n = n/10;
    }
    return kiemtrasonguyento(tong);
}
int daykhonggiam(long n)
{
    int i = 9;
    while(n>0){
        if((n % 10) > i) return 0;
        i = n % 10;
        n = n/10;
    }
    return 1;
}
Nguyễn Hoàng Trung viết 22:22 ngày 30/09/2018

anh giải thích giùm em hàm daykhonggiam với

Khôi Trần viết 22:23 ngày 30/09/2018

Để kiểm tra tổng là ngt trước kt nguyên tố nhá

Bài liên quan
0