13 条题解
-
16
这一道题有个小聪明的办法,把上一题的函数代码搬下来(如UP)~
- 首先把函数搬下来(判断素数的函数 sushu)
- 然后只需要确定范围即可,可以发现是从 2 ~ n - 1
- 最后判断如果两个都是素数就输出并换行
上代码吧~(简简单单AC~)
#include <bits/stdc++.h> using namespace std; bool sushu(int n) { for (int i = 2; i < n; i++) if (n % i == 0) return false; return true; } int main() { int n; cin >> n; for (int i = 2; i <= n - 2; i++) { int a = i, b = i + 2; if (sushu(a) && sushu(b)) cout << a << " " << b << endl; } return 0; }
-
7
#include <iostream> using namespace std; int main() { int n; cin >> n; for(int i=2;i<=n;i++) { int d=1; for(int j=2;j<i;j++) { if(i%j==0) { d=0; break; } } if(d==1) { for(int c=2;c<i+2;c++) { if((i+2)%c==0) { d=0; break; } } } if(d==1) { if(i+2<=n) { cout << i << " " << i+2 << endl; } } } }
-
2
#include<iostream> using namespace std; int y; bool t=1; int llk(int n,int m){ for(int i=2;i<n;i++){ if(n%i==0){ t=0; return t; } } for(int i=2;i<m;i++){ if(m%i==0){ t=0; return t; } } return t; } int main(){ cin>>y; for(int i=2;i<=y-2;i++){ llk(i,i+2); if(t){ cout<<i<<' '<<i+2<<endl; } t=1; } return 0; }
-
2
蒟蒻的题解来凑数啦!!!
#include <bits/stdc++.h> #define ll long long #define Rep(x, a, b) for (int x = a; x <= b; x++) #define Dep(x, a, b) for (int x = a; x >= b; x--) using namespace std; bool isprime(int n) { if (n < 2) return false; Rep(i, 2, sqrt(n)) if (!(n % i)) return false; return true; } int main() { // freopen("P139.in", "r", stdin); // freopen("P139.out", "w", stdout); ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; Rep(i, 1, n - 2) if (isprime(i) && isprime(i + 2)) cout << i << " " << i + 2 << endl; return 0; }
-
1
孪字打错了!!!
#include<bits/stdc++.h> using namespace std; int sushu(int n){ bool r=true; if(n<=1)r=false; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ r=false;break; } } return r; } int main(){ int n;cin>>n; for(int i=2;i<=n;i++){ if(sushu(i-2)==true&&sushu(i)==true)cout<<i-2<<" "<<i<<endl; } return 0; }
-
1
最短的
呵呵,这题不难,先来撸一撸(好像打错了)思路:
1,把上一题的函数照搬下来(懒)。 2,确定循环范围(2~N-1)。 3,判断。 4*,优化:可以发现素数都是奇(单)数,因此我们把i设定成最小的素数三,然后每次加二。
不说了,上代码!
#include <bits/stdc++.h> using namespace std; bool prime(int x) { for (int i=2;i<x;i++) if (x%i==0) return false; return true; } int main() { int n;cin>>n; for (int i=3;i<n;i+=2)if (prime(i) && prime(i+2)) cout<<i<<" "<<i+2<<endl; return 0; }
-
0
#include <iostream> using namespace std; int main() { int n; cin >> n; for(int i=2;i<=n;i++) { int d=1; for(int j=2;j<i;j++) { if(i%j==0) { d=0; break; } } if(d==1) { for(int c=2;c<i+2;c++) { if((i+2)%c==0) { d=0; break; } } } if(d==1) { if(i+2<=n) { cout << i << " " << i+2 << endl; } } } }
-
0
#include <iostream>//hetao3097453 using namespace std; bool sushu(int n) { if(n == 1 || n == 2 || n == 0) { return false; } for(int i = 2;i < n;i++) { if(n % i == 0) { return false; } } return true; } int main() { int a,b,c,d; for(int i = 1000;i < 3000;i++) { a = i; b = i % 1000; c = i % 100; d = i % 10; if((sushu(a) && sushu(b)) && (sushu(c) && sushu(d))) { cout << a << endl; } } return 0; }
函数搬下来(判断素数的函数 sushu)
确定范围即可,从 2 ~ n - 1
如果两个都是素数就输出
-
0
#include <bits/stdc++.h> using namespace std; int main() { int n,a,b,sum1=0,sum2=0; //a是i,b是i+1,sum1判断a是不是质数,sum2判断b(a+2)是不是质数. cin>>n; for(int i=2;i<=n-2;i++) { a=i; b=i+2; sum1=0; sum2=0; for(int c=2;c<=a-1;c++) { if(a%c0) //a有因数,sum1+1. { sum1++; } } for(int d=2;d<=b-1;d++) { if(b%d0) //a+2(b)有因数,sum2+1. { sum2++; } } if((sum10)&&(sum20)) { cout<<a<<" "<<b<<endl; //如果a和a+2(b)都是质数,输出a和a+2(b). } } return 0; }
- 1
信息
- ID
- 139
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 1579
- 已通过
- 765
- 上传者