算法学习-2
来源:互联网 发布:七月算法 编辑:程序博客网 时间:2024/06/14 02:17
题目要求: 一个数如果恰好等于它的因子之和(包括1, 但不包括这个数本身), 这个数就称为”完数”. 例如28的因子为1,2,4,7,14, 而28=1+2+4+7+14. 因此28是”wan'shu”完数. 编写算法找出1000之内的所有完数, 并按下面格式输出其因子: 28 it’s factors are 1,2,4,7,14.
算法设计:
C
#define MAX_SIZE (128)
int main(int argc, const char * argv[])
{
int factors[MAX_SIZE] = {0}, index = 0, num = 0;
// 顶层循环
for (int count = 1; count <= 1000; ++count)
{
// 计算因子
for (int factor = count/2; factor > 0; --factor)
{
if (count % factor == 0)
{
// 存储并累加因子
factors[index++] = factor;
num += factor;
}
}
// 是否为完数
if (num == count)
{
printf("%4d it's factors are ", count);
for (int tempIndex = 0; tempIndex < index - 1; ++tempIndex)
printf("%3d, ", factors[tempIndex]);
printf("%3d\n", factors[index - 1]);
}
index = num = 0;
}
return 0;
}
C++
int main(int argc, const char * argv[])
{
std::vector<int> factors{};
for (int count = 2; count <= 1000; ++count)
{
int num = 0;
for (int facotr = count/2; facotr > 0; --facotr)
{
if (count % facotr == 0)
{
factors.push_back(facotr);
num += facotr;
}
}
if (num == count)
{
// 设置字段宽度
std::cout.width(3);
std::cout << count << " it's factors are ";
for (int each : factors)
{
std::cout.width(3);
std::cout << each << ", ";
}
std::cout << std::endl;
}
factors.clear();
}
return 0;
}
Python
def Main():
# 创建列表
arr = list()
for count in range(2, 1000 + 1):
num = 0
# 查找因子
for factor in range(count//2, 0, -1):
if count % factor == 0:
arr.append(factor)
num += factor
# 如是完数则输出
if num == count:
print("%3d it's factors are " % count, end = '')
for index in range(len(arr)):
print('%3d, ' % arr[index], end = '')
print()
num = 0
算法设计:
C
#define MAX_SIZE (128)
int main(int argc, const char * argv[])
{
int factors[MAX_SIZE] = {0}, index = 0, num = 0;
// 顶层循环
for (int count = 1; count <= 1000; ++count)
{
// 计算因子
for (int factor = count/2; factor > 0; --factor)
{
if (count % factor == 0)
{
// 存储并累加因子
factors[index++] = factor;
num += factor;
}
}
// 是否为完数
if (num == count)
{
printf("%4d it's factors are ", count);
for (int tempIndex = 0; tempIndex < index - 1; ++tempIndex)
printf("%3d, ", factors[tempIndex]);
printf("%3d\n", factors[index - 1]);
}
index = num = 0;
}
return 0;
}
C++
int main(int argc, const char * argv[])
{
std::vector<int> factors{};
for (int count = 2; count <= 1000; ++count)
{
int num = 0;
for (int facotr = count/2; facotr > 0; --facotr)
{
if (count % facotr == 0)
{
factors.push_back(facotr);
num += facotr;
}
}
if (num == count)
{
// 设置字段宽度
std::cout.width(3);
std::cout << count << " it's factors are ";
for (int each : factors)
{
std::cout.width(3);
std::cout << each << ", ";
}
std::cout << std::endl;
}
factors.clear();
}
return 0;
}
Python
def Main():
# 创建列表
arr = list()
for count in range(2, 1000 + 1):
num = 0
# 查找因子
for factor in range(count//2, 0, -1):
if count % factor == 0:
arr.append(factor)
num += factor
# 如是完数则输出
if num == count:
print("%3d it's factors are " % count, end = '')
for index in range(len(arr)):
print('%3d, ' % arr[index], end = '')
print()
num = 0
arr.clear()
0 0
- 算法学习2:KNN 算法
- 算法学习笔记(2)
- 算法导论学习2
- 算法学习--数据结构2
- 算法导论2学习
- STL算法学习2
- 2阶段算法学习 。。
- 算法学习-2
- 算法学习 2
- 算法学习-2
- 算法学习2
- 每日学习一算法【2】A*算法
- 算法学习-2-2韩信点兵
- 算法导论学习笔记-2
- 如何学习算法 (2)
- 算法学习之路2
- 算法导论2学习整理
- 妙趣横生的算法学习2
- CharSequence与String
- 关于Red Hat 企业版下输入ifconfig显示not found问题解决办法
- 【数据结构 链表的应用】一元多项式相加及相乘 和对问题的分析
- Codeforces Round #302 (Div. 2) E. Remembering Strings(状压dp)
- YUM软件仓库学习
- 算法学习-2
- Vijos P1554 硬币游戏(ZJOI2009)题解
- ACdream的高速公路(暴力)
- struts2中文件上传与错误国际化
- java 构造方法
- 劳伤解(二) 阴阳
- X86-64寄存器和栈帧
- awk多维数组
- OCday3 初始化方法, 便利构造器, 继承