思路:1和任何数的gcd都等于1,除1外任何数和它自己的gcd都大于1,和它下一个数的gcd都等于1。
不可能所有的数的gcd都大于1(因为有1)。
下边 2~k+1 为数本身(gcd大于1)
k+2~n 为下标加一,即k+3~n+1%n=1(gcd等于1)
1 为k+2
#include <iostream>
#include <cstdio>
#include <algorithm>
#define max_ 3010
using namespace std;
int n,k;
int main()
{
cin>>n>>k;
if(n==k)
{
printf("-1\n");
return 0;
}
for(int i=1;i<=n;i++)
{
if(i==1)
printf("%d",(k+2-1)%n+1);
else if(i-1<=k)
printf(" %d",i);
else
printf(" %d",(i+1-1)%n+1);
}
printf("\n");
}