约数的个数与反序输出(C++)

这是一个包含两部分的编程问题。首先,对于给定的n个整数,使用C++计算并输出每个数的约数个数,通过开平方优化算法以降低时间复杂度。然后,接收任意4个字符并反序输出。问题要求对约数计数优化,以及理解C++中字符串反序操作。
摘要由CSDN通过智能技术生成

#约数的个数
题目描述
输入n个整数,依次输出每个数的约数的个数
输入描述:

输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。

输出描述:

可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。

这个题主要是要用开平方的方式来降低时间复杂度;假设x=a*a,那个x的两个约数必然是一个小于等于a,另一个大于等于a,所以用开平方的话,时间复杂度最小,如果除以2,那么运行时间会长很多;如果采用两个除数相乘来判断是否为约数(即采用两个for循环嵌套),那么会超出运行时间
利用余数是否为0来判断是否为约数,如果是0,且该除数的平方不等于被除数,那么约数+2,如果等于除数,那么约数+1(两个约数相同只算一个)
c++开平方函数:sqrt(x) (x为被开平方的数字),开平方未必就是整数,如果比较的对象是整数,可以进行强制类型转换,即int(sqrt(x))

#include<iostream>
#include<string>
#include<math.h>
using namesp
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值