请编写一个函数prim(int num) 该函数实现判别参数num是否为素数 在主函数中利用
问题详情
请编写一个函数prim(int num),该函数实现判别参数num是否为素数,在主函数中利用prime()函数验证哥德巴猜想——任何比2大的偶数都可表示为两个素数之和基本功能,根据main函数的调用情况给出正确的返回值。
注意:部分源程序已存在文件test36_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数prim的花括号中填写若干语句。
文件test36_1.cpp的内容如下:
include <iostream.h>
const LEN=100;
int prim(int num)
{
}
void main()
{
int a=7;
int cnt=0;
cout<<"a is 7:n";
int *s;
s=new int[LEN];
for(int i=2;i<a;i++)
{
if(!prim(i))
{
s[cnt]=i;
cnt++;
}
}
for (i=0;i<cnt;i++)
{
for (int j=i+1;j<cnt;j++)
{
if (s [i] +s [j] ==a)
cout<<s[i]<<"t"<<s[j]<<"t"<<end1;
}
}
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:int prim(int num){int halfflag;flag =0;half=num/2;for (int i=2;i<=half;i++){if(num%i==O)flag=1;elsecontinue;}if (flag==1)return 1;elsereturn 0;}
int prim(int num){int half,flag;flag =0;half=num/2;for (int i=2;i<=half;i++){if(num%i==O)flag=1;elsecontinue;}if (flag==1)return 1;elsereturn 0;} 解析:本题考查的是考生对一般应用的综合考查,主要是对于for函数使用的应用。其基本算法如下:从2开始到该数的一半进行穷举,每个数都对参数nam进行整除,如果发现有任何一个数能够整除num,则标志变量flag变为1,最后返回的时候,返回值根据标志flag分别返回——能整除flag为1,返回“不能整除flag为0,返回0。