c语言求素数伴侣

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

int n[100],m[50],count=0;//n用于盛放输入的数,m用于记录每种组合的素数伴侣,count用于记录数组小标

int i,s;////记录输入的数的个数

/////判断一个数是否为素数

int issu(int a)

{

int i;

for(i=2;i<=a/2;i++)

if(a%i==0)

return 0;

return 1;

}

void f()

{

int j,k,l,temp[100],temp1=0;

int p=0;

i=s;

////////初始化数组temp[100]

for(j=0;j

temp[j]=n[j];

//////求某中组合的素数伴侣的个数

for(j=0;j

for(k=j+1;k

{

p=temp[j]+temp[k];

if(issu(p))///如果两个数的和为素数

{

m[count]++;///对应的数组值加1(记录每中组合数的素数伴侣个数)

for(l=k;l

temp[l]=temp[l+1];///把满足条件的一对素数的后一个数的后面的数向前移一位

i--;///数组长度减去1

break;//跳出本次循环

}

else

continue;

}

count++;//数组下标加1

////把数组的第一个数移动到最后一位。

temp1=n[0];

for(j=0;j

n[j]=n[j+1];

n[s-1]=temp1;

}

void main()

{

int j,k;

int temp;

scanf("%d",&s);

for(j=0;j

scanf("%d,",&n[j]);

for(j=0;j

f();

for(j=0;j<50;j++)////对记录每种组合素数伴侣个数的数组进行排序(从大到小)for(k=j+1;k<50;k++)

if(m[j]

{

temp=m[j];

m[j]=m[k];

m[k]=temp;

}

printf("%d\n",m[0]);///输出其中最大的一个

}

相关文档
最新文档