首先,在这道题中,我们首先要把区间内的数字分为两类,包含偶数的区间和不包含偶数的区间。
1、包含偶数的区间,我们中需要令a=2,b=i-2。即可符合题意。
2、不包含偶数的区间,即只有一个奇数。那么我们要再次分类讨论,若该奇数为质数,贼输出-1;否则拆出它的两个因子(相乘为i)进行化简即可。
主要代码:
#include<bits/stdc++.h> using namespace std; int main(){ // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); int t; cin>>t; while (t--){ int l,r; cin>>l>>r; bool bol=true; for (int i=l;i<=r;i++){ if (i%2==0 & i!=2){ printf("%d %d\n",2,i-2); bol=false; break; } else { int s=sqrt(i); for (int j=3;j<=s;j+=2) if (i%j==0) { printf("%d %d\n",i/j,i/j*(j-1)); bol=false; break; } } if (bol==false) break; } if (bol) printf("-1\n"); } return 0; }
标签:Non,包含,int,偶数,coprime,Split,区间,txt From: https://www.cnblogs.com/purple123/p/17991323