怎么编译不出结果

潜行怪 2007-05-16 02:14:51
#include<iostream.h>
void main()
{
int a[1501];
int k=0,m,i,j;
for(i=0;k<=1500;i++)
{
m=i;
while(m!=1)
{
if(m%2==0) m=m/2;
else if(m%3==0) m=m/3;
else if(m%5==0) m=m/5;
else break;
}
if(m==1)
{
k++;
a[k]=i;
}
}
for(j=0;j<1501;j++)
cout<<a[j]<<' ';
}
前1500位能被2,3,5整除的数;
在c++中
没有结果啊
...全文
286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2007-05-17
  • 打赏
  • 举报
回复
&& 改成 ||

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int a[1500]; //数组空间 1500 足够了
int k=0,i;
for(i=1;k<1500;i++) //循环条件修改为 k<1500
{
if(i%2==0 || i%3==0 || i%5==0)
a[k++]=i;
}
for(i=0;i<k;i++)
cout<<a[i]<<' ';

system("pause");
return 0;
}
ziptl 2007-05-16
  • 打赏
  • 举报
回复
不只是因为0的问题,
比如m=55,能被5整除。但是:
if(m%5==0) m=m/5;
后m=11.
进入while(m!=1),出来后m还是11,再进入if(m==1),不成立。
与要求不符。

参考jixingzhong(瞌睡虫·星辰) 的程序
潜行怪 2007-05-16
  • 打赏
  • 举报
回复
我的意思是能被2,3,5中任何一中整除的。如1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,36,40,45,48,50,54,60,64,72,75,80,81,90,96,100,108,120,125,
> 128,135,144,150,160,162,180,192,200,216,225,240,243,250,256,270,288,300,320,324,360,375,384,400,405,432,
> 450,480,486,500,512,540,576,600,625,640,648,675,720,729,750,768,800,810,864,900,960,972,1000,1024,1080,
> 1125,1152,1200,1215,1250,1280,1296,1350,1440,1458,1500,1536,1600,1620,1728,1800,1875,1920,1944,2000,2025......................


总共有1500个这样的数字,找不到我的逻辑错误


for(i=0;k<=1500;i++)//i从1到1500遍历
{
m=i;//找到m来保存i的值
while(m!=1)//在这个循环中找到能整除2或3或5的数
{
if(m%2==0) m=m/2;
else if(m%3==0) m=m/3;
else if(m%5==0) m=m/5;
else break;
}
if(m==1)
{
k++;//k 是计数器
a[k]=i;
}
  • 打赏
  • 举报
回复
LZ。。。。。
你的代码我看不懂

for(i=0;k<=1500;i++)
{
m=i;
while(m!=1)
{
if(m%2==0) m=m/2;
else if(m%3==0) m=m/3;
else if(m%5==0) m=m/5;
else break;
}
if(m==1)
{
k++;
a[k]=i;
}
}

这个结构太乱了。。。。

jixingzhong 2007-05-16
  • 打赏
  • 举报
回复
逻辑有点问题 ....

看看上面的程序,参考一下。
jixingzhong 2007-05-16
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int a[1501];
int k=0,i;
for(i=6;i<=1500;i++)
{
if(i%2==0 && i%3==0 && i%5==0)
a[k++]=i;
}
for(i=0;i<k;i++)
cout<<a[i]<<' ';

system("pause");
return 0;
}
潜行怪 2007-05-16
  • 打赏
  • 举报
回复
改正好,i从1开始,也编译不出结果
pubb1986 2007-05-16
  • 打赏
  • 举报
回复
while(m!=1)
{
if(m%2==0) m=m/2;
else if(m%3==0) m=m/3;
else if(m%5==0) m=m/5;
else break;
}

当i=0时,死循环了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧