cpu625和821哪个好:有没有哪个好心人可以帮我编写一个C语言的程序。

来源:百度文库 编辑:高校问答 时间:2024/04/29 07:29:56
程序为:“对于一个不大于20的数据如果是偶数就分解为两个素数的和;对于一个不大于20的数据如果是奇数判断是否是素数,如果是素数判断是否是孪生素数。”顺便帮我画一个流程图。

#include <iostream.h>
#include <math.h>

void div(int data,int &x,int &y);
int isPrimeNum(int data);
bool Exists(int Array[8],int data);
int main()
{
int data;
int datax,datay;
cout<<"Input the datas"<<endl;
cin>>data;
if(data>0&&data<=20)
{
if(data%2==0&&data!=2)
{
div(data,datax,datay);
cout<<datax<<" "<<datay<<endl;
}
else
{
if(data==2)cout<<"Can't Divide"<<endl;
else
{
if(isPrimeNum(data)==0)
{
if((isPrimeNum(data+2)+isPrimeNum(data-2))<2)
cout<<"Twins PrimeNum"<<endl;
else cout<<"Only PrimeNum"<<endl;
}
else cout<<"Not PrimeNum"<<endl;
}
}
}
return 0;
}

void div(int data,int &x,int &y)
{
int PrimeArray[8]={2,3,5,7,11,13,17,19};
int i=0;
for(i=0;i<8;i++)
{
x=PrimeArray[i];
y=data-x;
if(Exists(PrimeArray,y))break;
}
}

bool Exists(int Array[8],int data)
{
for(int i=0;i<8;i++)
{
if(data==Array[i])return true;
}
return false;
}

int isPrimeNum(int data)
{
int count;
int i=2;
int flag=0;
int s;
count=(int)sqrt(data);
int mark[100]={0};
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;
}
写得不好,还请见谅!至于流程图还是自己参照程序来画吧