c语言求素数伴侣
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);///输出其中最大的一个 }