循环结构经典程序

1.输入一个正整数,求这个数的所有因子,并输出。例如24的因子1 2 3 4 6 12.

 1 #include<iostream.h>
 2 void main()
 3 {
 4     int n;
 5     cin>>n;//接收一个数
 6     if(n>0)//n大于0
 7     {
 8         cout<<n<<"的因子:";
 9         for(int i=1;i<n;i++)//循环
10         {
11             if(n%i==0)//判断整除
12             {
13                 cout<<i<<"  ";//输出因子
14             }
15         }
16     }
17     else
18     {
19         cout<<"error"<<endl;
20     }
21     cout<<endl;
22 }

2. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33

 1 #include<iostream.h>
 2 void main()
 3 {
 4     int gw,sw,bw;
 5     cout<<"水仙花数:";
 6     for(int n=100;n<=999;n++)
 7     {
 8         gw=n%10;
 9         sw=(n/10)%10;
10         bw=n/100;
11         if(n==gw*gw*gw+sw*sw*sw+bw*bw*bw)
12         {
13             cout<<n<<"  ";
14         }
15     }
16     cout<<endl;
17 }

 3.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子分别是:1,2,3,而6=1+2+3,所以6是完数。编程输出1000之内的所有完数

View Code
 1 #include<iostream.h>
 2 void main()
 3 {
 4     for(int n=2;n<1000;n++)
 5     {
 6         int sum=0;
 7         int lasti;
 8         for(int i=1;i<n;i++)
 9         {
10             if(n%i==0)
11             {
12                 sum+=i;
13                 lasti=i;
14             }
15         }
16         if(n==sum)
17         {
18             cout<<n<<"=";            
19             for(i=1;i<n;i++)
20             {
21                 if(n%i==0)
22                 {
23                     if(lasti!=i)
24                         cout<<i<<"+";
25                     else
26                         cout<<i;
27                 }
28             }
29             cout<<endl;
30         }
31     }
32 }

 4.输入两个正整数,求二者的最大公约数和最小公倍数.

View Code
 1 #include <stdio.h>
 2 void main(void)
 3 {
 4     int m,n,max,min,num;
 5     printf("请输入两个整数并用空格分隔:");
 6     scanf("%d%d",&m,&n);
 7     //printf("最大公约数%d最小公倍数%d",zdgys(m,n),zxgbs(m,n));
 8     max=(m>=n)?m:n;
 9     min=(m<=n)?m:n;
10     for(num=min;num>=1;num--)
11     {
12         if(m%num==0&&n%num==0)
13         {
14             break;
15         }
16     }
17     printf("%d和%d的最大公约数是%d\n",m,n,num);
18     
19     for(num=max;num<=m*n;num++)
20     {
21         if(num%m==0&&num%n==0)
22         {
23             break;
24         }
25     }
26     printf("%d和%d的最小公倍数是%d\n",m,n,num);
27 }
原文地址:https://www.cnblogs.com/shajianheng/p/2749453.html