对于常见数字类型的操作

对于常见数字类型的操作

注意下面这些例子中都是int,int数据类型的取值范围为-2147483648~2147483647(-2^{31} \sim 2^{31}-1) ,约为-2.15亿到2.15亿

1.提取整数的每一位

(1)利用整数取余

​ 利用整数取余,取余后再除以10,循环直到变成0

#include <iostream>

using namespace std;	

int Weishu(int n)//计算整数的位数
{
	if (n == 0) { return 0; }
	else
	{	
		int count = 0;
		while (n)
		{
			n = n / 10;
			++count;
		}
		return count;
	}
}

int main()
{
	int n;
	cin >> n;
	int weishu = Weishu(n);
	int* shu=new int[weishu];//创建一个存入每一位数的整数组
	int tem = n; int t = 0;
	while (tem)//逆序取出并存入整数的每一位
	{
		shu[t] = tem % 10;
		tem = tem / 10;
		++t;
	}

	delete[] shu;
	return 0;
	
}

(2)利用to_string函数

to_string是C++标准库中的一个函数,用于将各种基本数

​ 据类型转换为对应的字符串表示

#include <iostream>
#include <string>//要带头文件
using namespace std;	

int main()
{
	int n;
	cin >> n;
	string str = to_string(n);
	cout << str;//存入后数字的顺序不会改变,要访问某一位与数组访问元素类似,使用str[i]
	return 0;
}

2.求逆序数

​ 模10取出最后一位,并不断左移一位

#include <iostream>
using namespace std;	

int Reverse(int n)//逆序函数
{
	int rev = 0;
	while (n)
	{
		rev = n % 10 + rev * 10;//n不断降,rev不断升
		n = n / 10;
	}
	return rev;//如果n正好是10的整数倍,n最后的0会在rev前省略
}
int main()
{
	int n;
	cin >> n;
	cout << Reverse(n);
	return 0;
}

3.判断素数

​ 素数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能 被其他自然数整除的数叫做质数

bool isPrime(int n) {
	if (n <= 1) return false;
	int aqr = (int)sqrt(1.0 * n);
	for (int i = 2; i <= aqr; i++)
	{
		if(n% i == 0) return false;
	}
	return true;
}

4.回文数

​ 一个数字无论从左到右读还是从右向左读,都是相同的

bool hws(int n)
{
	int ans=0,m=n;
	while(m>0)
	{
		ans=ans*10+m%10;
		m/=10;
	}
	return ans==n;
}

5.完全数

​ 一个数等于它的所有真因子之和。例如,6是一个完全数,因为6的真因子是1、2、3,而1+2+3=6。

bool perfect_num(int x) {
	//初始化flag
	bool flag = false;
	//初始化所有因子之和
	int sum = 0;
	//遍历从1到x的所有整数
	for (int i = 1; i < x; ++i) {
		//判断是否为因子
		if (x % i == 0) {
			sum += i;
		}
	}
	//更新flag
	flag = (sum == x);
	return flag;
}

;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值