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 }