/查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数

来源:互联网 发布:开过淘宝店铺能注销吗 编辑:程序博客网 时间:2024/06/06 00:07

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


int main()
{
int fun (int num);
int sushu(int num);
    int i,n1,n2;
printf("请输入两个数(0<n1<n2<32768):\n");
scanf("%d%d",&n1,&n2);
for(i = n1;i < n2;i++)//输出n1 ~ n2的值,对于每一个值调用两个函数判断
{
if(fun(i) && sushu(i) )//条件同时满足才可以
{
printf("%d\t",i);
}



}
printf("\n");
    return 0;
}


int fun (int num)//判断是否有两位相同
{
int a[7];//存放每一位的数
int j,k,m;
int cnt = 0;
for(j = 0;num != 0;j++)//从个位开始取每一位
{
a[j] = num % 10 + '0';//当成字符来处理
num = num / 10;
}
a[j] = '\0';//结尾赋结束标志符

for(k = 0;a[k] != '\0';k++)//计数2
{
for(m = 0;a[m] != '\0';m++)
{
if(a[m] == a[k])
cnt++;
}
if(cnt == 2)
return 1;
}
return 0;
}




//判断是否是素数
int sushu(int num)
{
int i,flag = 1;//flag 用于返回是不是素数
if(num < 2)
return 0;
for(i = 2; i * i <= num ; ++i)//i < 根号num
{
if (num % i == 0)//一旦发现能被某书整除就返回0
{
flag = 0;
}
}
return flag;
}
0 0
原创粉丝点击