求第1500个只有2,3,5因子的数.数是从小到大排列,第一个数是1,1=2^0*3^0*5^0.
有我自己编的但是答案不对请帮忙看看哪里不对#include<stdio.h>voidmain(){inti=1,j,n;for(j=1;j<=1500;n++){if(n...
有我自己编的但是答案不对
请帮忙看看哪里不对
#include <stdio.h>
void main()
{
int i=1,j,n;
for (j=1;j<=1500;n++)
{
if (n%2==0||n%3==0||n%5==0)
i=n;
{
printf("第%d个=%d\n",j,i);
j++;
}
}
} 展开
请帮忙看看哪里不对
#include <stdio.h>
void main()
{
int i=1,j,n;
for (j=1;j<=1500;n++)
{
if (n%2==0||n%3==0||n%5==0)
i=n;
{
printf("第%d个=%d\n",j,i);
j++;
}
}
} 展开
2015-10-08
展开全部
1,for (j=1;j<=1500;n++) for (n=1;n<=1500;n++)
2,if (n%2==0||n%3==0||n%5==0) 应该是一直除到不能除尽为止,再判断是否是0
后面的输出自己改吧
2,if (n%2==0||n%3==0||n%5==0) 应该是一直除到不能除尽为止,再判断是否是0
后面的输出自己改吧
追问
能具体说明一下吗 没看懂
追答
if (n%2==0||n%3==0||n%5==0)
主要是这个,因为要求
只有2,3,5因子的数
而这中方法并不能排除其他的因数
int i=n;
可以改成while(i%2==0)
{
i/=2;
}
3和5一样
最后判是不是1(之前手误)
参考
#include
int make(int x,int y)
{
while(x%y==0)
{
x/=y;
}
return x;
}
int main()
{
int ans=0;
for(int i=1;;i++)
{
int n=i;
n=make(n,2);n=make(n,3);n=make(n,5);
if(n==1)
ans++;
if(ans==1500)
{
printf("%d",i);break;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询