隐形眼镜找不到怎么办:C函数调用之判断举例(东北大学C语言作业)

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 03:40:00
东北大学C语言作业:对于输入个不大于20的数,若输入为偶数则分解为两个素数(奇数)之和;若为素数则判断他是否为孪生素数。PS.要利用函数调用!麻烦朋友们来做做啊!嘎嘎~
各位朋友 : 最好能用 TC2.0能通过~

#include <stdio.h>
#include <math.h>

void div(int data,int * hd1,int * hd2);
int isPrimeNum(int data);
int Exists(int Array[8],int data);

int main()
{
int data;
int *datax=0,*datay=0;
printf("Input the data:\n");
scanf("%d",&data);
if(data>0&&data<=20)
{
if(data%2==0&&data!=2)
{
div(data,datax,datay);
printf("%d is divided as:%d,%d\n",data,*datax,*datay);
}
else
{
if(data==2)printf("Can't divide\n");
else
{
if(isPrimeNum(data)==0)
{
if((isPrimeNum(data+2)+isPrimeNum(data-2))<2)
{
printf("%d is Twins PrimeNumber\n",data);
}
else printf("Only PrimeNumber\n");
}

}
}

}
return 0;
}

void div(int data,int *hd1,int *hd2)
{
int PrimeArray[8]={2,3,5,7,11,13,17,19};
int i=0;
for(;i<8;i++)
{
*hd1=PrimeArray[i];
*hd2=data-(*hd1);
if(Exists(PrimeArray,*hd2)==1)break;
}
}
int Exists(int array[8],int data)
{
int i;
for(i=0;i<8;i++)
{
if(data==array[i])return 1;
}
return 0;
}

int isPrimeNum(int data)
{

int count;
int i=2;
int flag=0;
int s;
int mark[100]={0};
count=(int)sqrt((double)data);

while(flag==0&&i<=count)
{
if(mark[i]==0)
{
if(data%i==0)
{
flag=1;
break;
}
}
else
{
s=i+i;
while(s<=count)
{
mark[s]=1;
s=s+i;
}
}
i=i+1;
}
return flag;
}

在TC2.0下调试通过.