当前位置:编程学习 > C/C++ >>

C语言编写子函数

写函数 int IsPrime(unsigned int n), 函数功能为:判定n是否是素数,若是,返回1;否则,返回0。 利用上述IsPrime编写函数 int IsMPrime(unsigned int n), 函数功能为:判定n是否是梅森素数, 若是,返回1;否则,返回0。 写主函数,输入M,输出1~M之间的所 有梅森素数。 梅森素数:即可以表示为2p-1的素数, 其中p也为素数。如3,7,31。
答案:0分。。。自己调吧。
#include <stdio.h>
int IsPrime(unsigned int n){
unsigned  int i;
for(i=2;i<n;i++){//对大于1小于n的数进行循环
if(n%i == 0){//如果期间有能整除的数,直接返回0
return 0;
}
}
return 1;//返回1
}

int IsMPrime(unsigned int n){
if(IsPrime(n) ==0){//如果此数本身不是素数直接返回0
return 0;
}
unsigned  int p;
unsigned  int x;
p=0;
x=n+1;
wihle(x !=1){//求出比x大且与x最近的2的p次方中的p
x=x>>1;
p++;
}
if(pow(2,p) != n+1){//如果此数+1不是2的p次方,则直接返回0
return 0;
}
return IsPrime(p);//判断p是否为素数,返回判断值
}

int main(){
unsigned  int m;
scanf("%d”,&m);
if(m > 1000){//为了防止输入的数太大导致机器死掉,限定输入的数小于1000。
return 0;
}
for(;m>0;m--){//对大于0,小于输入数的整数挨个进行判断
if(IsMPrime(m) ==1){//如果是梅森素数直接打印
printf("%d,",m);
}
}
return 0;//结束程序
}
其他:子函数写在前,不需要写声明,但函数过多会显得结构混乱;
子函数写在后,需要写声明,但在声明处加了函数说明注释之后,代码结构比较清晰;
 

上一个:C程序设计:一个教务管理系统的设计,包括学生姓名,学号,成绩,求高手设计方法
下一个:c语言的题目,各位高手讲解一下谢谢!!!(知道答案,但不知为啥)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,