1~n的和:(1+n)n/2
所以和在1~n中是n或者n/2的倍数
提出n(因为不是每个n都有n/2)有:(n-1)n/2
当n为奇数时:(n-1)是偶数,可以被2整除;只有n=1时例外,提出n后0和1gcd不满足,分析除本选法其他方法也没法实现
当n为偶数时:n和n/2除因数2以外还有其他因数,所以gcd>1;只有2例外,2和1gcd==1,分析除本选法外其他方法也没法实现
所以综上
#include <iostream>
using namespace std;
int n;
int main(int argc, char** argv) {
cin>>n;
if(n==1||n==2) puts("No");
else{
puts("Yes");
printf("1 %d\n%d ",n,n-1);
for(int i=n-1;i>=1;i--)
printf("%d ",i);
}
return 0;
} 
京公网安备 11010502036488号