/*****************************************************
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 i);
int fun2(int i);
int fun2(int i);
int main()
{
int i,j,n = 1; //定义循环变量i,j、规则输出参数n和取值范围n1,n2
int n1,n2;
{
int i,j,n = 1; //定义循环变量i,j、规则输出参数n和取值范围n1,n2
int n1,n2;
printf("Enter 2 number (0 < n1 < n2 < 32768) :\n"); //提示用户输入取值范围
scanf("%d%d",&n1,&n2);
scanf("%d%d",&n1,&n2);
printf("The result is :\n");
for(i = n1;i <= n2;i++) //利用循环对取值范围内的数进行判断
{
if(fun1(i) && fun2(i)) //调用函数fun1和fun2,如果同时满足才输出当前值
{
n++;
printf("%6d",i);
if((n-1) % 5 == 0) //规则输出
{
printf("\n");
}
}
}
printf("\n");
for(i = n1;i <= n2;i++) //利用循环对取值范围内的数进行判断
{
if(fun1(i) && fun2(i)) //调用函数fun1和fun2,如果同时满足才输出当前值
{
n++;
printf("%6d",i);
if((n-1) % 5 == 0) //规则输出
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
}
int fun1(int i) //判断当前值是否是素数的函数
{
int j,flag = 1;
for(j = 2;j <= sqrt(i);j++)
{
if(i % j ==0) //一旦发现当前值不是素数就退出循环,并且把标志位置0
{
flag = 0;
break;
}
}
{
int j,flag = 1;
for(j = 2;j <= sqrt(i);j++)
{
if(i % j ==0) //一旦发现当前值不是素数就退出循环,并且把标志位置0
{
flag = 0;
break;
}
}
return flag; //返回标志位让主函数进行判断
}
}
int fun2(int i) //判断当前值是否有且仅有两位相同
{
int n = 0,flag1 = 0,flag2 = 0,flag;
int j,k;
int a[10],b[10] = {0};
//a数组用来存放每一位的数,b数组用来存放每一位和其他位有多少个相同的个数
while(i)
{
a[n++] = i % 10;
i = i / 10;
}
{
int n = 0,flag1 = 0,flag2 = 0,flag;
int j,k;
int a[10],b[10] = {0};
//a数组用来存放每一位的数,b数组用来存放每一位和其他位有多少个相同的个数
while(i)
{
a[n++] = i % 10;
i = i / 10;
}
for(j = 0;j < n;j++) //利用循环对于每一位和之后位有多少相同进行判断
{
for(k = j + 1;k < n;k++)
{
if(a[j] == a[k])
{
b[j] = b[j] + 1; //b数组初始化为全0,一旦发现有一个相同就加1
}
}
}
{
for(k = j + 1;k < n;k++)
{
if(a[j] == a[k])
{
b[j] = b[j] + 1; //b数组初始化为全0,一旦发现有一个相同就加1
}
}
}
for(j = 0;j < n;j++)
{
if(b[j] == 1) //只有当b数组内的值为1的时候才是有且仅有两位相同
{
flag1 = 1; //不是有且仅有两个相同的时候,将标志位置为0
}
if(b[j] > 1)
{
flag2 = 0;
}
}
//返回标志位让主函数进行判断
if(flag2)
{
flag = 0;
return flag;
}
else
{
flag = 1;
return flag;
}
{
if(b[j] == 1) //只有当b数组内的值为1的时候才是有且仅有两位相同
{
flag1 = 1; //不是有且仅有两个相同的时候,将标志位置为0
}
if(b[j] > 1)
{
flag2 = 0;
}
}
//返回标志位让主函数进行判断
if(flag2)
{
flag = 0;
return flag;
}
else
{
flag = 1;
return flag;
}
}