甘肃与陕西交界处地图:c语言编程

来源:百度文库 编辑:高考问答 时间:2024/04/29 01:54:51
输入一个不大于20的数据,如果是偶数分解为两个素数的和,如果是奇数看它是否有孪生素数,对于20以下的所有素数求素数和。用函数调用,画流程图。

#include<stdio.h>
void countss(int N);
void os(int N);
int qs(int N,int flag);
void main()
{
int n;
printf("输入一个不大于20的数据N:");
scanf("%d",&n);
while(n>20)
{
printf("\nN值是一个不大于20的数据且不能小于0,请再输入一次:");
scanf("%d",&n);
}
if(n%2==0)//判断是否是偶数
os(n);
else
qs(n,n);
countss(n);
}
int qs(int N,int flag)
{//如果是奇数看它是否有孪生素数
int i,temp=1;
for(i=2;i<N;i++)
{
if(N%i==0)
break;
}
if(i==N||N==1)
{
if(qs(N-2,flag))
{
printf("%d和素数%d是孪生素数\n",N,N-2);
}
if(flag-2==N)
return 1;
else
return 0;
}
else
return 0;
}
void os(int N)
{//如果是偶数分解为两个素数的和
int i,j,k,a,b;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
for(k=2;k<N;k++)
{
if(j%k==0)
break;
}
if(j==k||j==1)
{
for(a=j+1;a<=N;a++)
{
for(b=2;b<a;b++)
{
if(a%b==0)
break;
}
if(a==b)
{
if(j+a==N)
{
printf("%d=%d+%d\n",N,j,a);
return;
}
}
}
}
}
}
}
void countss(int N)
{//N以下的所有素数求素数和
int i,j,s=0;
for(i=1;i<=N;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(i==1||j==i)
s=s+i;
}
printf("%d之前素数之和为:%d\n",N,s);
}