C/C++求完数,小提醒

来源:互联网 发布:淘宝供货商怎么找免费 编辑:程序博客网 时间:2024/06/06 05:07
通常求完数无非就是使用循环,思路清晰。但是在这里只是想提醒各位一下,is_PerfectNum (判断是否是完数的函数)的循环,没必要循环到该数为止,道理很明显,如果 10/2=5 ,那么 6还可能是它的因子吗?其实在好多循环里面都可以用到这一点。这样可以提高大部分效率。。注意这一点的同学请忽略此文。。。

// Perfectnumber.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdlib.h"int _tmain(int argc, _TCHAR* argv[]){bool is_PerfectNum(int arg);int count=0;for (int i = 2; i < 10000;i++){if (is_PerfectNum(i)){count++;}}printf("\n10000以内共以上 %d 个完数\n", count);system("pause");return 0;}bool is_PerfectNum(int num){int count = 0;int div2 = num / 2 ;for (int x = 1; x <= div2; x++)        // 没必要循环到 num 才停止{if (!(num%x)){count += x;}}if (count==num){printf("%d\t ", count);return true;}else return false;}





0 0
原创粉丝点击