Description
题目描述
给一个正整数n,请求n所有因子的累加和。
输入
每行一个整数n,1≤n≤100,000,000。如果n为0表示输入结束,不需要处理。
输出每行输出一个结果。
样例输入
1
2
3
4
0
样例输出
1
3
4
7
在学校网站上做的题目,初学C语言,菜的很,不懂什么算法,求各位高手指点下我,不胜感激。以下是我的代码,提交到学校网站上去提示Time Limit Exceed
#include <stdio.h>//1172.因子和
int main()
{ long n;
int i, sum;
while(scanf("%d", &n)&&n!=0)
{
sum = 0;
if(n==1){printf("1\n");continue;}
else
{
for(i=1;i<n/2+1;i++)
if(n%i==0)sum=sum+i;
printf("%d\n", sum+n);
}
}
return 0;
}
时间超时了 说明算法需要优化 试试这个 看能不能AC
#include <stdio.h>//1172.因子和还是超时了。。。是不是换个思路,用其他的算法实现呢
追答改后最坏情况下也就for了10000 应该不会超时的啊 你把题目网址发过来 我瞧瞧
追问http://202.197.224.59/exam/index.php/problem/read/id/1172
追答Sorry! Register Closed! [ Return ]
。。。爱莫能助。。
\/* 计算正整数n所有因子(1和n除外)之和。(用C语言编程)
void main(){ int n;int s=0;printf("请输入一个正整数:");scanf("%d",&n);printf("该整数除1和其本身的因子为:\\n");for(int i=2;i<=n\/2;i++){ if(n%i==0){ printf("%d\\t",i);s=s+i;} } printf("\\n%s%d\\n","所有因子之和为:",s);} ...
c语言 输入一个正整数n,输出n的所有因子
当您需要在C语言中编写程序来找出一个正整数n的所有因子时,首先需要定义一些整型变量,以便进行运算。程序的流程如下:步骤1:初始化两个整数变量n和m,确保它们都是大于2的正整数,作为输入。步骤2:设置一个临时变量t,其值为m,同时定义一个变量i,初值设为2,用于遍历可能的因子。接下来,使用do...
c语言 输入一个正整数n,输出n的所有因子
5、用i对整数m求余,保存在变量r中。6、判断i是否m的质因子,如果是则继续判断是否n的质因子,如果不是n的质因子,则退出循环。7、如果i不是质因子,则自加1,继续判断。8、运行程序,输入两个大于2的正整数后,计算机就会判断整数n是否包含m的所有质数因子,并输出结果。
用C语言:计算并输出给定整数N的所有因子(不包括1与自身)之和
思路:输入一个数n,接着for循环从2到n-1依次整除n,如果能被整除则累加,最后输出累加和。参考代码:include<stdio.h>int main(){ int n,i,sum=0; scanf("%d",&n); for(i=2;i<n;i++) if(n%i==0) sum+=i; printf("累加和为:%d\\n",sum); return 0;}...
C语言:编写函数,计算出形参n的所有因子之和(包括1与自身)?
程序的执行效率非常高(瞬间就完成):include "stdio.h"int fun(int n){int i,s=n+1;for(i=2;i*i<n;i++)if(n%i==0)s+=i+n\/i;if(i*i==n)s+=i;return s;} main(){ int k;scanf("%d",&k);printf("%d\\n",fun(k));} ...
如何用C语言计算因子之和?
在C语言中,你可以通过编写一个简单的程序来接收用户输入的数,并计算其因子之和。以下是一个示例代码:这个程序首先提示用户输入一个正整数。然后,它使用一个for循环从1到用户输入的数字,检查每个数是否是输入数字的因子(如果输入的数可以被这个数整除,那么这个数就是因子)。如果是因子,就把它加...
c语言:计算正整数n的所有质因子之和作为函数值返回,并输出该值
include "stdio.h"main(){ int add();int n,sum;scanf("%d",&n);sum=add(n);printf("%d",sum);} int add(int p){ int i,sum1=0;for(i=2;i
c语言 输入一个正整数n,输出n的所有因子
把if(x=0)改成 if (x == 0)这种错误初学者经常会犯,老手也不能避免,一个偏方是写这种语句时把数值放在前面,比如写成 if (0 == x)这样如果你漏了个等号,写成了 if (0 = x),编译时编译器会报错
急!c语言 求一个数所有的因子加起来得到的和.
题目中未确定因子不包括数字T本身。include<stdio.h>int main(){int T;scanf("%d",&T);int c[T],i,a,N=0;for(i=1;i<=T;i++)scanf("%d",&c[i]);for(i=1;i<=T;i++){for(a=1;a<=c[i]\/2;a++)if(c[i]%a==0)N+=a;printf("%d\\n",N);N=0;}return 0;} ...
C语言:输入一个正整数, 计算并显示出该数的各位数字之和.
int i;int sum=0;if(n>1000||n<0){ puts("输入的数字超出范围!"); \/\/ 错误信息提示 } else { for(i=2;i<n;i++) \/\/ 循环遍历n,取出因子,并进行累加 { if(0 == n%i){ sum+=i;} } } return sum;} void main(){ int n,sum;printf("Input n: ");scanf("%d",&n)...