c语言 编一个判别素数的函数,然后写一主函数调用该函数,将整数90分成两个素数之和。下面那里错了

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:11:22
#include <stdio.h>
void main()
{int prime(int);
int n,a,b,c=90;
for(a=1;a<90;a++)
if(prime(a))
{ b=c-a;
printf("%d,%d",a,b );
}

}
int prime(int n)
{int flag=1,i;
for (i=2;i<n/2 && flag==1;i++)
if(n%i==0)
flag=0;
return(flag);
}
函数定义应该没有错,错在编译的部分

定义没有错,只是判断出了错误而已,
既然是把90分为二个素数之和,那么就要对这二个数都进行素数判断。

#include <stdio.h>
void main()
{int prime(int);
int n,a,b,c=90;
for(a=2;a<90;a++)
{ b=c-a;
if(prime(a)&&prime(b))
printf("%d,%d\n",a,b );
}

}
int prime(int n)
{int flag=1,i;
for (i=2;i<n/2 && flag==1;i++)
if(n%i==0)
flag=0;
return(flag);
}

summersuner 我运行过了,确实可行,但是有些小错误;你的运行结果是:7,83;11,69;17,73;19,71;23,67;29,61;31,59;37,53;43,47;47,43;53,37;59,31;61,29;67,23;71,19;73,17;79,11;83,7;89,1 从43到47以后都是重复的,1不是素数吧,最后那个89和1好象有问题

#include "stdio.h"
#include <stdlib.h>
int prime(int x)
{
int i=1;
do
{ i++;
}while (x%i!=0);
if(i==x)
return 1;
else
return 0;
/* while(x%i)
i++;
if(i==x)
return 1;
else
r