各种趣味整数

时间:2021-05-28 11:11:37

//完数(一个数等于他的因子之和,例如6=3+2+1)
//题目要求:求某一范围完数的个数
 

#include<stdio.h>
int main(){
 int m,n,i,j,k,sum,count=0;
 scanf("%d %d",&m,&n);
 for(k=m;k<=n;k++){
  sum=0;//在这里要重新复制 
  for(i=1;i<k;i++){
   if(k%i==0){
    sum=sum+i;
   }
  }
   if(sum==k){
    printf("%d是完数\n",k); 
    count++;
   }
   
 }
 printf("一共%d个完数\n",count);
 return 0;
} 
 

运行结果:

各种趣味整数


问题描述:

各种趣味整数

代码:

#include<stdio.h>
int a[4];
int main(){
   int i,j,k,sum=0,t;
   for(i=1234;i<=9876;i++){
   	a[0]=i/1000;
   	a[1]=i%1000/100;
   	a[2]=i%1000%100/10;
   	a[3]=i%10;
   	t=0;
   	for(j=0;j<4;j++)
   	{
   		for(k=j+1;k<4;k++){
   			if(a[j]==a[k])
   			t=1;
		   }
	   }
	   if(t==0){
	   	sum=a[3]*1000+a[2]*100+a[1]*10+a[0];
   	    if(i==sum*4){
   		printf("%d\n",sum);
	   }
	   }
   }
   return 0; 
} 
  


运行结果:

各种趣味整数


问题描述:

//亲密数(整数A的全部因子之和不含本身=B,B的全部因子之和不含本身=A)
//求3000之内的全部亲密数



代码:


#include<stdio.h>
int main(){
 int i,j,k,sum1,sum2,count=0;;
    for(i=2;i<=3000;i++){
     sum1=0;
  sum2=0;
     for(j=1;j<i;j++){//求i的因子和sum1 
      if(i%j==0){
       sum1=sum1+j;
   }
  }
  for(k=1;k<sum1;k++){//求sum1因子和sum2
   if(sum1%k==0){
       sum2=sum2+k;
   }
  }
  if(i<sum1){//开始此处的条件是不等于,结果会出现六对,换成小于就会排除交换过来重复输出的情况 
   if(sum2==i){
   printf("%d  %d\n",i,sum1);
   count++;
     }
  } 
  
 } 
 printf("%d\n",count);
 return 0;
} 

运行结果:

各种趣味整数