C++的两个小案例
#include<iostream.h>#include<math.h>
#define maxnum 10000
void main()
{
int n,sum,i;
for(n=1;n<=maxnum;n++)
{ sum=0;
for(i=1;i<=n/2;i++)
{if(n%i==0)
sum=sum+i;
if(sum==n)
cout<<n<<endl;
}
}
}
为何最后输出的结果不是6,28,496,8128
#include <iostream> using namespace std; const unsigned maxnum = 10000; int main( void ) { for( unsigned n=1; n<=maxnum; ++n ) { unsigned sum = 0; for( unsigned i=1; i<=n/2; ++i ) if( n%i == 0 ) sum += i; if( sum == n ) cout << n << endl; } return 0; }
#include <iostream> using namespace std; #define maxnum 10000 int main() { for(int n=1;n<=maxnum;n++) { int sum=0; for(int i=1;i<=n/2;i++) if(n%i==0) sum=sum+i; if(sum==n) cout<<n<<endl; } return 0; }
#include <iostream> //同版主rsjp,一定要注意代码排版,易于查错,易于阅读 const int maxnum = 10000; //建议使用const int main() //建议放弃非标准写法,main函数返回void(有些编译器通不过的),而是返回int { int n,sum,i; for(n = 1; n <= maxnum; n++) { sum = 0; for(i = 1; i <= n/2; i++) { if(n%i == 0) sum = sum+i; } if(sum == n) //原代码就是这个放错位置了 std::cout << n << std::endl; //不添加名字空间std的cout,会报错的 } return 0; }
[此贴子已经被作者于2016-1-1 11:37编辑过]