C语言学习历程——编程练习2——04
2017-04-30 12:18
393 查看
4. 查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数:
(1)该数的十进制表示中有且仅有两个相同的数字位;
(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
)
{
count++;
//如果相同,计数器记录相同的次数
}
}
}
if (count == 1)
{
huanhang++;
if (huanhang % 10 == 0)
{
printf ("\n");
}
printf ("%6d", 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;
}
(1)该数的十进制表示中有且仅有两个相同的数字位;
(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
)
{
count++;
//如果相同,计数器记录相同的次数
}
}
}
if (count == 1)
{
huanhang++;
if (huanhang % 10 == 0)
{
printf ("\n");
}
printf ("%6d", 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;
}
相关文章推荐
- C语言学习历程——编程练习2——08
- C语言学习历程——编程练习2——02
- C语言学习历程——编程练习2——06
- C语言学习历程——编程练习3——04
- C语言学习历程——编程练习2——10
- C语言学习历程——编程练习2——03
- C语言学习历程——编程练习2——09
- C语言学习历程——编程练习3——01
- C语言学习历程——编程练习2——07
- C语言学习历程——编程练习3——02
- C语言学习历程——编程练习3——03
- C语言学习历程——字符串训练04
- C语言学习历程(二十一) 网络编程-服务器端创建到接收
- C语言学习历程——Training01整数算法训练04
- C语言学习历程——Training02位运算04
- C++ Primer Plus 学习笔记 第四章 04编程练习
- C语言学习历程(二十)网络编程-客户端创建到发送
- 分支程序设计04 - 零基础入门学习C语言13
- 数据类型,运算符和表达式03 - 零基础入门学习C语言04
- C专家编程学习笔记——第三章(三):有效地解读C语言的声明