1~n之间的回文数,素数,亲密数,水仙花数特殊数据的提取
来源:互联网 发布:解压软件安卓版 编辑:程序博客网 时间:2024/06/05 06:00
用四个子函数来判断一个数是不是 满足回文数 素数 亲密数 水仙花数。
其中判断回文数,先把输入的字符串数字入栈,将栈与原字符串用strcmp()函数进行比较是否一样进行比较是不是回文数。
其中用到将字符转化为整型的函数atoi(m),m为字符串数组。还有将整型数字转化为字符串的函数itoa(x,m,10)其中x为整型数字,m为存字符串的数组,10位基数(就是需要转换的进制数)。
回文数:若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
素数:大于一的除一和本身以外不能被其他数整除的数。
亲密数:如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对。
水仙花数:三位自幂数:水仙花数
实训代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int huiwen(charm[],int len)//传入字符串m和它的长度
{
int i, j = 0;
char *M;
M = (char *)malloc(sizeof(char)*(len + 1));//生成动态数组
for (i = len - 1; i>-1;i--)
{
M[j++] = m[i];
}
M[j] = '\0';//将数组以\0结尾变为字符串形式
if (strcmp(m, M) == 0)
return 1;
else
return 0;
free(M);//释放空间
}
int sushu(intx)//判断X是不是素数
{
int i;
for (i = 2; i <= sqrt(x);i++)//sqrt是开方
{
if (x%i== 0)
return 0;
}
return 1;
}
int qinmishu(intx, int y)//判断 x y是不是亲密数
{
int sum = 0, sum2 = 0;
int i, j;
for (i = 1; i <= x / 2; i++)
{
if (x%i== 0)
sum += i;//求x的因子之和
}
for (j = 1; j <= y / 2; j++)
{
if (sum%j == 0)
sum2 += j;//求y的因子之和
}
if (sum2 == x&&sum ==y)//满足条件返回真(1)否者返回假(0)
return 1;
else
return 0;
}
int shuixianhua(intx)//判断是不是水仙花数
{
int a, b, c, sum;
a = x / 100;//取百位
b = (x - a * 100) /10;//取十位
c = x % 10;//取个位
sum = a*a*a + b*b*b + c*c*c;//求和
if (sum == x)
return 1;
else
return 0;
}
int main()
{
int a, b, c, d, len, num;
int i, j,n;
char *s, *m;
s = (char *)malloc(sizeof(char) * 10);
m = (char *)malloc(sizeof(char) * 10);
printf("请输入一个数;\n");
scanf("%s",s);
printf("请选择需要输出的结果:\n");
printf("0.退出\n1.回文数\n2.素数\n3.亲密数\n4.水仙花数\n");
scanf("%d",&n);
num = atoi(s);//将字符串变为整型数
printf("%s以内的",s);
switch (n)
{
case 0: {printf("退出程序....\n");return 0; }
case 1:{printf("回文数:\n");
for (i = 1; i <= num; i++)
{
m = itoa(i, m, 10);//将整型数变为字符串
len = strlen(m);
a = huiwen(m, len);
if (a == 0)
printf("");
else
printf("%d ",i);
}
}break;
case 2:
{
printf("素数:\n");
for (i = 2; i <= num; i++)
{
b = sushu(i);
if (b == 0)
printf("");
else
printf("%d ",i);
}
}break;
case 3: {printf("亲密数:\n");
for (i = 1; i <= num; i++)
{
for (j = i+1; j <=num; j++)
{
c = qinmishu(i, j);
if (c == 0)
printf("");
else
printf("(%d %d)", i, j);
}
}
}break;
case 4: {printf("水仙花数:\n");
for (i = 100; i <= 999; i++)
{
d = shuixianhua(i);
if (d == 0)
printf("");
else
printf("%d ",i);
}
}
break;
}
return 0;
}
- 1~n之间的回文数,素数,亲密数,水仙花数特殊数据的提取
- C语言 特殊数问题 回文数 素数 亲密数 水仙花数
- 水仙花数:n位数的水仙花数
- 特殊的回文数
- 特殊的回文数
- 输入一个数(N),列出(1~N)之间的素数
- 求1-10000之间的水仙花数
- 求两个数1~n之间的素数
- 素数回文数的个数
- 求两个数之间的素数+一个数的各位之和+判断回文数
- 求水仙花数和回文的判断
- 求100以内的素数 水仙花数
- 蓝桥杯-特殊回文数&&特殊的数字
- C语言实现判断素数,回文数,水仙花数,闰年
- I00010 打印1到输入数之间的回文数
- Tsinsen 清橙 A1005. 特殊的数字1 (水仙花数)
- 输出m到n的水仙花数
- 素数回文——输出两整数之间所有既是回文数又是素数的数 C++实现
- 中国人工智能AI专家齐聚共论创新与发展
- SQL必知必会
- 关于Future.cancel(false)
- pkg-config --libs --cflags
- Hi3516a平台实现osd文字处理
- 1~n之间的回文数,素数,亲密数,水仙花数特殊数据的提取
- 【mongoDB实战】mongo集群---主从复制篇
- 集合框架 1
- 19、react之 中间件的使用
- 守护进程
- webstorm上传文件到github
- 【Sicily】1001. 会议安排
- KeepAlived的高可用实验
- 守护进程