ps队徽制作圆形:一个C语言的小问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 09:19:57
请帮我看看这个小程序到底哪里出了问题,谢谢!
题目:输入一个四位数字,输出这个数以内的最大的5和素数。

#include "stdio.h"
#include "math.h"
main()
{int x,k,i,s,m;
scanf("%d",&x);
if (x/1000==0||x/1000>9) printf("Input Error");
else
i=0,s=1;
while(i<=5)
for(k=x-1;k>=2;k--)
{for(m=2;m<=sqrt(k);m++)
if(k%m==0) {s=0;break;}
while(s==1) printf("%d,",k);i++;}
}
十分感谢!
那应该怎样解决呢?

"5和素数"是什么意思,5个素数吗?你看修改之后是你要的意思吗!
#include "stdio.h"
#include "math.h"
main()
{int x,k,i,s,m;
scanf("%d",&x);
if (x/1000==0||x/1000>9) printf("Input Error");
else
{
i=0,s=1;
for(k=x-1;k>=2;k--,s=1)
{for(m=2;m<=sqrt(k);m++)
if(k%m==0) {s=0;break;}
if(s==1)
{printf("%d\t",k);
i++;
}
if(i==5) break;
}
}
}

从键盘输入一个十进制数,如果为0或大于9000,显示“input error”,
后面我还没学会

i=0,s=1;
while(i<=5)
for(k=x-1;k>=2;k--)
{for(m=2;m<=sqrt(k);m++)
if(k%m==0) {s=0;break;}
while(s==1) printf("%d,",k);i++;}
}

用s来作标志,但是在循环中没有让s恢复的语句。也就是当s=0时,while(s==1)就失效了。