您的位置:首页 > 其它

查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数: (1)该数的十进制表示中有且仅有两个相同的数字位; (2)该数是素数

2016-10-30 19:12 896 查看
#include <stdio.h>

void fun(int n1,int n2);//查找n1到n2的素数
void fun1(int n);//判断该素数的十进制表示里,如果只有2位相同,则输出

void fun(int n1,int n2)
{
int i;
int j;

for (i = n1; i <= n2; i++)
{
for (j = 2; j < i; j++)//如果能被J整除则退出循环
{
if (i % j == 0)
{
break;
}
}
if (j == i)//如果退出循环时,i=j,则该数为素数
{
fun1(i);//进行另一个条件的判断
}
}
}

void fun1(int n)
{
int i=0;
int j;
int m = n;
int s[5];
int count = 0;//素数的十进制位数计数
int flog = 0;//含有相同位数的个数的计数

while (m != 0)//将素数的各位存储在数组里,便于判断相同的数值
{
s[i] = m % 10;
m = m / 10;
i++;
count++;
}

for (i = 0; i < count - 1; i++)//选择法比较
{
for (j = i + 1; j < count; j++)
{
if (s[i] == s[j])
{
flog++;
}
}
}

if (flog == 1)//只有2位相同输出该素数
{
printf("%d ",n);
}
}

int main()
{
int n1;
int n2;

printf("Enter n1 and n2(0<n1<n2<32768)!\n");
scanf("%d%d",&n1,&n2);
printf("The result!\n");

fun(n1,n2);

printf("\n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐