(2)该数是素数。
分析:先判断是不是素数,之后在该条件下寻找第一个条件。
下面是代码实现:
/************************************************************** 查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数: (1)该数的十进制表示中有且仅有两个相同的数字位; (2)该数是素数。 **************************************************************/ #include <stdio.h> void Search(int n1, int n2) { int i = 0, j = 0, k = 0; int m = 0, n = 0; int temp = 0; int t = 0; int flag = 0; int count = 0; int huanhang = 0; int Arr[10] = {0}; for (i = n1; i < n2; i++) //先在n1到n2之间找到素数 { for (j = 2; j < i; j++) { if (i % j == 0) { flag = 1; } } if (flag == 0) { if (i > 10) { temp = i; while (temp) //取出各位数放到数组里 { Arr[k] = temp % 10; temp /= 10; k++; } for (m = 0; m < k - 1; m++) //遍历数组,寻找两个相同的数 { t = Arr[m]; for (n = m + 1; n < k; n++) { if (t == Arr[n]) { count++; //如果相同,计数器记录相同的次数 } } } if (count == 1) { huanhang++; if (huanhang % 10 == 0) { printf ("\n"); } printf ("m", i); //一次相同的就是要找的数,并且打印,10个换行 } count = 0; k = 0; } } flag = 0; } printf ("\n"); } int main() { int n1 = 0; int n2 = 0; printf ("please input n1 and n2 :"); scanf ("%d%d", &n1, &n2); if (n1 > n2 || n1 < 0 || n2 < 0 || n1 >= 32768 || n2 >= 32768) //判断输入的范围是否符合0,32768 { printf ("error!\n"); return -1; } Search(n1, n2); return 0; }