Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
Cho một số nguyên dương ~n~. Bạn hãy đếm số cách phân tích số ~n~ thành tổng hai số nguyên tố khác nhau ~u,v\ (u< v)~.
Input
- Số nguyên dương ~n\ (2≤n≤3×10^5)~.
Output
- Dòng đầu ghi một số nguyên ~k~ là số cách phân tích thỏa mãn điều kiện đề bài. Nếu không có cách phân tích ghi số ~0~.
- Trường hợp ~k>0, k~ dòng tiếp theo, dòng thứ ~i~ ghi hai số ~u_i,v_i\ (u_i< v_i)~ là cách phân tích thứ ~i~ theo yêu cầu: ~u_1< u_2<…< u_k~.
Sample
Input #1
82
Output #1
4
3 79
11 71
23 59
29 53
Input #2
11
Output #2
0
Hint
- Số ~82~ có ~4~ cách phân tích ~82=3+79=11+71=23+59=29+53~. Cách phân tích ~82=41+41~ không được tính vì ~u=v~.
- Số ~11~ không phân tích được.
Problem source: Chuyên Sơn La Online Judge
Bình luận
include<bits/stdc++.h>
using namespace std; using ll= long long ; int n=1000000; int nt[1000000]; void sang() { for(int i=0;i<n;i++) { nt[i]=1;
} nt[0]=nt[1]=0; for(int i=2;i<sqrt(n);i++) { if(nt[i]==1) { for(int j =i*i;j<n;j+=i) { nt[j]=0; } } } } int main() { sang(); int x; cin>>x; int dem=0; for(int i=2;i<x/2 + 1;i++) { if(nt[i] && nt[x-i] && i!= x-i) { dem++; } } cout<<dem<
}
ad ơi cho e xin editorial bài này đc ko ạ