#include<stdioh>
int main(){
int i,n,m,a,b,count=0;
int facsum(int n);
scanf("%d%d",&m,&n);
for(;m<=n;m++) {
a=facsum(m);
if(m<a);
b=facsum(a);
if(m==b&&m<a)
printf("%5d%5d\n",m,a);
if(m==a)
count++;
}
printf("%5d\n",count);
return 0;
}
int facsum(int n){
int i,s=0,m=n/2;
for(i=1;i<=m;i++){
if(n%i==0)
s=s+i;
}
return s;
}
将双重循环改为单次循环,可大大减少运行时间!
最主要的措施就是改进算法,如控制循环次数;多使用中间结果,减少运算次数等。
此外还可以从程序设计技术角度采取一些措施:如尽量减少值传递,多用引用来传递参数;减少减少除法运算;多用局部变量等。
那个ntvdmexe就是支持你的C程序运行的16位的虚拟机程序。从你的情形来看,当时的确是程序正在进行大量的运算,如果算法不进行优化处理的话,会把机器拖死也算不出。
从你的结果来看,你的程序还有问题,结果的不确定性就说明程序中有错。当然不是语法错误,而是逻辑错误,也就是算法上的错误,需要你重新修正。
这个与 *** 作系统有关,常用的 *** 作会保存在内存中不被立即释放。
按原理说每次打开文件系统都会创建句柄并访问文件头信息,若不进行读写直接关闭的话,硬盘 *** 作非常少,万次以内感觉不到,除非是软盘。但 *** 作系统的资源分配与使用率有密切关系,所以当你反复开关文件时,基本上所有的资源都在内存中缓存,这包括文件系统、磁盘访问的缓存、 *** 作系统内存分配等等,他们都会保存访问频率高和最近使用的数据。所以效率的影响微乎其微。但是若加入写 *** 作效率就略低了。
以上就是关于C语言紧急求救!!! 这个程序运行时间太长了,怎么改,是他优化一下非常感谢!!!!!!全部的内容,包括:C语言紧急求救!!! 这个程序运行时间太长了,怎么改,是他优化一下非常感谢!!!!!!、如何提高C语言程序运行效率、运行一个c语言程序后,电脑变得很慢,它是在计算吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)