/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <math.h>
#include <math.h>
int fun1(int j);
int fun2(long temp);
int fun2(long temp);
int main()
{
int i = 0,j,k; //定义循环变量i,j,k和中间变量temp
long temp;
{
int i = 0,j,k; //定义循环变量i,j,k和中间变量temp
long temp;
printf("The numbers are :\n");
for(j = 2;i < 7;j++) //在主函数中对中间变量temp进行赋值,在函数调用中就比较简单明了
{
temp = 1;
for(k = 0;k < j;k++)
{
temp = 2 * temp;
}
temp = temp - 1;
if(fun1(j) && fun2(temp)) //调用函数,对函数返回值进行判断,同时满足就表明是默森尼数
{
i++;
printf("%d ",temp);
}
}
printf("\n");
for(j = 2;i < 7;j++) //在主函数中对中间变量temp进行赋值,在函数调用中就比较简单明了
{
temp = 1;
for(k = 0;k < j;k++)
{
temp = 2 * temp;
}
temp = temp - 1;
if(fun1(j) && fun2(temp)) //调用函数,对函数返回值进行判断,同时满足就表明是默森尼数
{
i++;
printf("%d ",temp);
}
}
printf("\n");
return 0;
}
}
int fun1(int j) //调用函数,判断j是否为素数
{
int i; //定义循环变量i和标志位flag1
int flag1 = 1;
{
int i; //定义循环变量i和标志位flag1
int flag1 = 1;
for(i = 2;i < sqrt(j);i++)
{
if(j % i == 0)
{
flag1 = 0; //一旦j有因数,退出循环,将标志位flag1置为0
break;
}
}
{
if(j % i == 0)
{
flag1 = 0; //一旦j有因数,退出循环,将标志位flag1置为0
break;
}
}
return flag1; //返回标志位,让主函数进行判断
}
}
int fun2(long temp) //调用函数,判断temp是否为素数
{
int i; //定义循环变量i和标志位flag1
int flag2 = 1;
{
int i; //定义循环变量i和标志位flag1
int flag2 = 1;
for(i = 2;i < sqrt(temp);i++)
{
if(temp % i == 0)
{
flag2 = 0; //一旦temp有因数,退出循环,将标志位flag2置为0
break;
}
}
{
if(temp % i == 0)
{
flag2 = 0; //一旦temp有因数,退出循环,将标志位flag2置为0
break;
}
}
return flag2; //返回标志位,让主函数进行判断
}
}