01/10/2018, 00:30

Tìm số nguyên tố trong mảng

xin cao thủ giúp em ?
em có một mảng , tìm số nguyên tố đó trong mảng
xuất ra dãy số nguyên tố đó trong mảng ! tât cả nhập bằng tay
em học c++ ;
dùng mảng và vòng lặp ko dùng hàm

> //
> //  main.cpp
> //  Sntmang1chieu
> //
> //  Created by Macbook on 20/10/2016.
> //  Copyright © 2016 Macbook. All rights reserved.
> //

> #include <iostream>
> using namespace std;
> int main(int argc, const char * argv[]) {
>     int n;
>     cout <<"so luong mang ";
>     cin >> n;
>     int array[n];
>     cout <<"Nhap phan tu mang : "<<endl;
>     for (int i =0 ; i <n ;i++)
>     {
>         cout << "phan tu "<< i<< " : " ;
>         cin >> array[i];
>     }
>     
>     bool c =1;
>     for(int i=2 ;i<n;i++)
>     {
>         
>         if (n%array[i]==0)
>         {
>             c=0;
>         }
>         if (c=1 )
>         {
>             cout << " So Nguyen To "<<array[i];
>         }else {
>             cout <<"khong co so NT";
>         }
>         
>     }
> }

hình như sai gì đó

Nguyễn Xuân Phúc viết 02:44 ngày 01/10/2018

Bạn hỏi thế thì chịu, ít nhất cũng phải cho mọi người biết bạn thật sự có gì và cần gì chứ?

  • Bạn dùng ngôn ngữ nào?
  • Bạn học nhập xuất chưa?
  • Bạn học cấu trúc lặp, cấu trúc rẻ nhánh chưa?
  • Bạn học mảng, hàm, … chưa?
  • Bạn có thể làm được những phần nào trong đề bài này?
Nguyễn Xuân Phúc viết 02:40 ngày 01/10/2018

ok, giờ tạm bỏ qua cái mảng
nếu mình có 1 số X và cần kiểm tra xem nó có phải nguyên tố hay không, thì bạn sẽ làm thế nào?

Tí Lãng Tử viết 02:44 ngày 01/10/2018

bạn có zalo hay facebook để mình nt cho tiện ko
xin cảm ơn

Nguyễn Xuân Phúc viết 02:33 ngày 01/10/2018

thì b cứ rep trên này mọi người cùng thảo luận luôn cũng đâu sao
còn nếu muốn private thì có thể gửi Message ngay trong diễn đàn luôn đó

Người bí ẩn viết 02:44 ngày 01/10/2018

int array[n];

Sai chỗ này nè =))
Cấp phát tĩnh trước. VD n = 8 thì viết int array[8]
Còn không thì cấp phát động ~~

Còn vòng for check số nguyên tố bạn tự tìm nhé

Tí Lãng Tử viết 02:37 ngày 01/10/2018

nếu mún biêt số nhập vào có phải số nguyên tố không thì em làm như sau :
bool c;
for int i =2 ; i<n ; i++; {
// n là số muốn kiểm tra là snt ko
if n%i==0
c =0
}
if c=1
số n là số nt
else không phải

Tí Lãng Tử viết 02:35 ngày 01/10/2018

cái này là mảng có bao nhiêu phần tử mà

Nguyễn Xuân Phúc viết 02:46 ngày 01/10/2018

ok. Vậy giờ khi duyệt qua mỗi phần tử trong mảng, và ta xem nó X, thì ta sẽ kiểm tra như thế nào?
Có phải là

for (int i = 0; i < n ; i++){
    x = array[i];
    // kt nguyên tố
    //tăng đếm nếu x là số nguyên tố
}
viết 02:41 ngày 01/10/2018

Cho mình hỏi chỗ n % array[i] == 0 để làm gì? n là số lượng phần tử trong mảng.

Tí Lãng Tử viết 02:39 ngày 01/10/2018

Vậy hả anh
> #include

        using namespace std;
        int main(int argc, const char * argv[]) {
            int n;
            cout <<"so luong mang ";
            cin >> n;
            int array[n];
            cout <<"Nhap phan tu mang : "<<endl;
            for (int i =0 ; i <n ;i++)
            {
                cout << "phan tu "<< i<< " : " ;
                cin >> array[i];
            }
            
            int dem =0;bool c =1;
            for(int i=0;i<n;i++)
            {
                for(int j =2 ; j<n ; j++)
                {
                    if(array[i]%n == 0)
                    {
                        c=0;
                    }
                    if (c==1 ){
                        dem++;
                    }
                }
                
                
            }
        }
Nguyễn Xuân Phúc viết 02:30 ngày 01/10/2018

for(int j =2 ; j<n ; j++)
{
if(array[i]%n == 0)
{
c=0;
}
if (c==1 ){
dem++;
}
}

đang kiểm tra tính nguyên tố của số nào? n là gì? tại sao lại for theo n?

Người bí ẩn viết 02:36 ngày 01/10/2018

cái này là mảng có bao nhiêu phần tử mà

nếu n là constant variable thì được phép int arr[n], còn không thì không được !

viết 02:44 ngày 01/10/2018

Ví dụ mình nhập như sau:
n = 5
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
Chạy 2 vòng for (int i = 0; i < n; i++) để duyệt hết mảng vì n là số phần tử của mảng, vòng for (int j = 2; j <= sqrt(n); j++) để duyệt số nguyên tố.
if (array[i] % j == 0) thì không phải số nguyên tố.

Nguyễn Xuân Phúc viết 02:45 ngày 01/10/2018

n là số lượng phần tử của mảng, thì liên quan gì đến việc array[i] có là số nguyên tố hay không bạn :v
mình đang muốn đặt những câu hỏi, để bạn chủ thread trả lời, để bạn đó biết được thực sự code của mình đang làm gì, và nó sai ở đâu

viết 02:43 ngày 01/10/2018

Mình quote nhầm thôi, mình edit rồi

Tí Lãng Tử viết 02:32 ngày 01/10/2018

n là dãy số để mảng nhập vào
ví dụ n 1 .2.3…4…5.6.7
thì mảng có 7 phần tử
vòng lặp thì phải nhỏ hơn phần tử

Nguyễn Xuân Phúc viết 02:35 ngày 01/10/2018

vậy nếu mảng là 2 4 6 8 10
trong đoạn đó, array[i] đóng vai trò là gì? j đóng vai trò là gì? n đóng vai trò là gì?

Tí Lãng Tử viết 02:42 ngày 01/10/2018

array[i] là giá trị được mảng gán vào
vd a[1] vơi i là một được gán 2
a[2] với i là 2 được gán vào 4
v…v…
j đóng vai trò là tăng phần tử của mảng bắt đầu từ 2 để xét duyệt mảng
n là để biết mảng có bao nhiêu phần tử vi dụ
mảng có 5 phẩn tử thì n là 5

Nguyễn Xuân Phúc viết 02:44 ngày 01/10/2018

for(int j =2 ; j<n ; j++)
{
if(array[i]%n == 0)
{
c=0;
}
if (c==1 ){
dem++;
}
}

vai trò của nó trong đoạn code này ấy!
array[i] ngoài là phần tử thứ i trong mảng, thì trong đoạn này, nó đóng vai trò là gì?
và vòng lặp for j để làm gì?
và tại sao lại kiểm tra array[i] % n?

Tí Lãng Tử viết 02:42 ngày 01/10/2018

array[i] là các giá trị phần tử mảng
vòng lăp j dùng để kiểm tra số nguyên tố
còn array[i] %j em viết sai

Bài liên quan
0