双重循环
外循环,内循环
回溯算法
能用循环算法就不用回溯算法;
求n以内的所有因子的和
#include <stdio.h>
int main()
{
int ,n,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(n%i==0)
{
sum+=i;
if(i!=n/i)
sum+=n/i;
}
}
printf("%d",sum);
return 0;
}
双重循环 求n以内的所有因子的和
#include <stdio.h>
int main()
{
int n,i,j,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int nsum=0;
for(j=1;j*j<=i;);
{
if(i%j==0)
{
nsum+=j;
if(j!=i/j)
nsum+=i/j;
}
sum+=nsum;
}
}
printf("%d",sum);
return 0;
}
单重循环 求n以内的所有因子的和
#include <stdio.h>
int main()
{
int n,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+n/i*i;
}
printf("%d",sum);
return 0;
}
n的阶乘
双重循环
#include <stdio.h>
int main()
{
int n,i,j,fac;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int nfac=1;
for(j=1;j<=i;j++)
nfac*=j;
fac+=nfac;
}
printf("%d",fac);
return 0;
}
单重循环
#include <stdio.h>
int main()
{
int n,i,fac=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fac*=i;
sum+=fac;
}
printf("%d",sum);
return 0;
}