幂积序列,第22行,输出i时为什么要减1?

img


#include<stdio.h>
int main()
{
int a[10000];
int n,m,i,j=0;
for(i=1;i<200000000;i++)
{
n=i;
while(n%2==0)
n/=2;
while(n%3==0)
n/=3;
if(n==1)
a[++j]=i;
}
while(scanf("%d%d",&n,&m)!=EOF)
{
int p;
for(i=1;a[i]<=n;i++)
if(i==m)
p=a[i];
printf("%d\n",i-1);
printf("%d\n",p);
}
return 0;
}

因为你执行for(i=1;a[i]<=n;i++),会执行i++,即使是最后一次不满足条件a[i]<=n,也会执行i++,所以i比求的值大1,因此要减1