Nhập vào 1 dãy số nguyên dương n,in ra các số nguyên tố có trong dãy số đó?

Em có một bài tập như sau:

Nhập vào 1 dãy số nguyên dương n,in ra các số nguyên tố có trong dãy số đó,

Em đang học viết hàm con nên mong anh chị khi sửa thì dùng hàm con hộ em, em cảm ơn.

Đây là bài em làm: http://codepad.org/0rPxeI0m

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
    int n,i,x[10];
    printf("nhap so luong phan tu");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("x[%d]",i);
        scanf("%d",&x[i]);
    }
    printf("mang x[i] da nhap vap");
    for(i=0;i<n;i++)
    {
        printf("%2d",x[i]);
    }
    for(i=0;i<n;i++)
    {
        if(nt(x[i],n)==1)
        {
            printf("cac so nguyen to co trong mang la %d",x[i]);
        }
    }
}
int nt(int x[10],int n)
{
    int i,j;
    int kt;
    for(i=0;i<n;i++)
    {
        kt=1;
        for(j=2;j<x[i];j++)
        {
            if(x[i]%j==0)
            kt=0;
        }

    }
    if(kt)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
#include <iostream>
using namespace std;
#define MAX 100

void ArrayIn(int a[], int n){
	for(int i=0; i<n; i++){
		cin >> a[i];
	}
}

void ArrayOut(int a[], int n){
	cout << "Array: ";
	for(int i=0; i<n; i++){
		cout << a[i] << "  ";
	}
	cout << endl;
}

bool CheckPrime(int n){
	if(n < 2){
		return false;
	}
	else if (n > 2){
		if(n%2 == 0){
			return false;
		}
		for(int i=3; i<=sqrt(float(n)); i+=2){
			if(n%i == 0){
				return false;
			}
		}
	}
	return true;
}

void PrimePrint(int a[], int n){
	cout << "Prime: ";
	for(int i=0; i<n; i++){
		if(CheckPrime(a[i]) == true){
			cout << a[i] << "  ";
		}
	}
	cout << endl;
}

int main()
{
	int a[MAX], n;
	cout << "Input N = ";
	cin >> n;
	ArrayIn(a, n);
	ArrayOut(a, n);
	PrimePrint(a, n);

	return 0;
}
1 Like

Viết hàm main trước mà không chịu khai báo hàm
int nt(int x[],int n);
Cái thứ 2 :

 if(nt(x[i],n)==1) 

Thứ 3 :Thuật toán sai rồi.

Hàm CheckPrime anh thiếu trường hợp == 2 kìa, 2 cũng là prime mà

dòng return true ~ else ~ == 2

Là sao anh, em không hiểu

1 Like

vì 2 điều kiện trên là <2 và >2 rồi nên nếu =2 (không thuộc cả 2 dk) thì sẽ trả về true

1 Like

Vậy không cần else hả anh, lỡ nó return false trong cái else if, đi ra ngoài nó có return tiếp về true không

=2 thì nó k vào if hay else if đâu e =))

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?