这是我写的代码,下面图片是题目
#include
int pend(int x)
{
int i;
for(i=2;i*i<=x;i++)
{
if(x%i==0)
return 1;
}
return 0;
}
int main()
{
int n,m,a,b,t;
int i,j,k,s=0;
scanf("%d",&t);
while(t--)
{
printf("输入参与的人数n和小明的编号m:\n");
scanf("%d%d",&n,&m);
printf("输入开始的人的编号a和开始的合数b\n");
scanf("%d%d",&a,&b);
for(k=a;k!=m;)
{
if(s%2!=0)//“s”用来纪录素数的个数//
{
k-=1;b+=1;
if(k==0)k=n;
}
else
{
k+=1;b+=1;
if(k==n+1)k=1;
}
if(pend(b)==0)
s++;
}
if(pend(b)==0)
printf("duang\n");
else
printf("%d\n",b);
}
return 0;
}
复制出了点问题#include没有复制好,不好意思,各位帮忙看看除了它,其他有没有思路上的问题
有没有问题,难道LZ你没有试试调试运行一下,看看能否得到你想要的结果。
如果不能,则说明有问题,再将你具体的问题提出来吧。
还有就是贴代码时,请使用编辑区的 </> 功能,以方便别人看代码。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
bool _isprime(int k)
{
int i;
for(i=2;i<=sqrt(k);i++)
{
if(k%i==0)
return false;
}
return true;
}
int main()
{
int i,j,k,T,n,m,a,b;
cin>>T;
while(T--)
{
int next,flag=0;
k=0;
cin>>n>>m>>a>>b;
next=a%n+1;
if(m==a)
{
cout<<b<<endl;
continue;
}
while(next!=m)
{
if(!flag)
{
if(_isprime(++b))
{
flag=1;
if(next==1)
next=n;
else
next=next-1;
}
else
next=next%n+1;
}
else
{
if(_isprime(++b))
{
flag=0;
next=next%n+1;
}
else
{
if(next==1)
next=n;
else
next=next-1;
}
}
}
if(_isprime(++b))
cout<<"duang"<<endl;
else
cout<<b<<endl;
}
}
你那个输入输出都不对