这个程序用vc++2010编译后执行速度巨慢
以下是一个求完全数的程序,我用vc++2010编译后运行,发现速度不是一般的慢,共耗时132.969秒钟,尝试了多种优化措施,变化不大,各位大大帮忙看看是什么原因。以下是源代码:
// 完数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <time.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
clock_t start, finish;
int h,i,j,k,l,m,n,p;
long long a,b,c;
double x,z;
cout<<"n=";
cin>>n;
cout<<endl;
if(n<1) n=1;
if(n>32)n=32;
start = clock();
for(i=2;i<=n;i++)
{
p=i;m=0;
x=p;z=sqrt(x);h=int(z);
if(h<(p-1)) h++;
for(j=2;j<=h;h++)
{
if((p % j)==0)
{
m=1;break;
}
}
if(m==0)
{
a=1;
for(k=1;k<=p;k++)
{
a*=2;
}
a=a-1;
x=(double)a;z=sqrt(x);h=int(z)+1;
l=0;
for(j=2;j<=h;j++)
{
b=j;
if((a % b)==0)
{
l++;
break;
}
}
if(l==0)
{
if(a<3037000499) c=a*(a+1)/2; else c=a;
cout<<" 质数: "<<i<<" ";
//cout<<endl;
if(a<3037000499) cout<<"完数= "<<c;else cout<<"素数= "<<c;
cout<<endl;
}
}
}
finish = clock();
z= (double)(finish - start) / CLOCKS_PER_SEC;
cout<<"t= "<<z;
system("pause");
return 0;
}