30/09/2018, 23:03
Xác định vị trí của số nguyên tố gần với x nhất
Đề bài là : Nhập một dãy số a có n phần tử là các số nguyên.Nhập số x.Xác định vị trí của số nguyên tố trên a có giá trị gần với x nhất.
Em code như thế này mà ko ra đáp án.Nhờ mn chỉ giáo.
#include <iostream>
#include <math.h>
using namespace std;
int a[100], n, i, j, x, kt;
int nt(int m)
{
if(m < 2) return 0;
for(j = 2; j <= sqrt(m); j++)
{
if(m%j == 0) return 0;
}
return 1;
}
void nhap()
{
cout << "nhap n = ";
cin >> n;
for(i = 0; i < n; i++)
{
cout << "a[" << i << "] = ";
cin >> a[i];
}
cout << "x = ";
cin >> x;
}
void ktra()
{
kt = 999999;
for(i = 0; i < n; i++)
{
if(abs(x - a[i]) < kt)
kt = abs(x - a[i]);
}
}
void inkq()
{
cout << "
";
for(i = 0; i < n; i++)
{
if(nt(a[i]) && (abs(x - a[i]) == kt) )
cout << i << " ";
}
}
int main()
{
nhap();
ktra();
inkq();
}
Bài liên quan
Mình cho thuật toán thôi nhé , chứ đang dùng ipad: Đặt Min = INT_MAX, duyệt mảng bình thường, trong mỗi lần lặp, kiểm trả xem a[i] có phải số nguyên tố hay không, nếu phải kiểm tra tiếp x - a[i] có nhỏ hơn Min không, nếu nhỏ hơn cap nhật lại Min. Sau khi duyệt xong thì chỉ việc return Min;
tks c, để mình code nhé.
Bonus thêm là nhớ tạo 1 biến vitri = 0 nhé, khi gán x - a[i] cho Max thì ta đồng thời gán i cho vitri luôn và cuối cùng return vitri chứ không phải Max nhé