30/09/2018, 16:23

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;
    }
}
X viết 18:25 ngày 30/09/2018
#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;
}
Người Cô Đơn viết 18:27 ngày 30/09/2018

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.

nhatlonggunz viết 18:33 ngày 30/09/2018

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

X viết 18:32 ngày 30/09/2018

dòng return true ~ else ~ == 2

nhatlonggunz viết 18:39 ngày 30/09/2018

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

X viết 18:28 ngày 30/09/2018

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

nhatlonggunz viết 18:29 ngày 30/09/2018

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

X viết 18:36 ngày 30/09/2018

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

Bài liên quan
0