设置一个标记数组,初始化为0.
先将输入的数标记为1。
每次从数列中去一个数为n,对n进行(3n+1)猜想,并将猜想所演化的数字都标记为0;最后将标记为1且在输入数列中的数输出。
#include<stdio.h>
int main()
{
int n,a,b,c[100],d[101]={0},e=0;
scanf("%d",&n);
for(a=0;a<n;a++){
scanf("%d",&c[a]);
d[c[a]]=1;
}
for(a=0;a<n;a++){
while(c[a]!=1){
if(c[a]%2==0){
c[a]=c[a]/2;
if(c[a]<=100)
d[c[a]]=0;
}
else{
c[a]=(3*c[a]+1)/2;
if(c[a]<=100)
d[c[a]]=0;
}
}
}
for(a=101;a>0;a--){
if(d[a]==1){
if(e!=0)
printf(" ");
printf("%d",a);
e=1;
}
}
return 0;
}