C语言紧急求救!!! 这个程序运行时间太长了,怎么改,是他优化一下非常感谢!!!!!!

C语言紧急求救!!! 这个程序运行时间太长了,怎么改,是他优化一下非常感谢!!!!!!,第1张

#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语言程序后,电脑变得很慢,它是在计算吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9820115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存