万数归一

来源:互联网 发布:windows wdf驱动开发 编辑:程序博客网 时间:2024/05/18 07:45

随意输入一个正整数,如果是偶数则除以2,如果是奇数则乘以3加1,如此反复,会发现无论最初的数是什么都会变为1。写一个程序验证。

#include<conio.h>
#include<stdio.h>
long process(long a)
{
 if(0==a%2)
   a=a/2;
 else
     a=3*a+1;
 return a;
}
long initialize()
{
 long a;
 printf("please input a interger:");
 scanf("%ld",&a);
 if(a<=0)
   {
    printf("error input");
    exit(0);
   }
 return a;
}
void main()
{
 long a,i=0;
 a=initialize();
 while(1)
         {
          a=process(a);
          printf("%ld ",a);
   ++i;
   if(a==1)
            break;
         }
 printf("/ni=%ld",i);
 getch();
 clrscr();
}

原创粉丝点击