题目是输入两个正整数m和n,输出m和n之间所有的素数 ,每行六个
答案:6 悬赏:40 手机版
解决时间 2021-04-02 22:05
- 提问者网友:欺烟
- 2021-04-02 08:56
题目是输入两个正整数m和n,输出m和n之间所有的素数 ,每行六个
最佳答案
- 五星知识达人网友:撞了怀
- 2021-04-02 10:18
#include
void main()
{
int m,n,i,j,k;
printf("input range(1~500)");
scanf("%d,%d",&m,&n);
bool flag;// 增加一个标志
for(i=m,j=0;i<=n;i++)
{
flag = true;// 假设是素数
for(k=2;k<=i;k++)
{
if(i%k==0&&i!=k)
{
flag = false;// 标记为合数后再退出循环
break;
}
}
if (flag)// 如果是素数
{
printf("%5d ",i);// printf 语句放到循环外面了
j++;
if(j%6==0)
printf("\n");
}
}
}
void main()
{
int m,n,i,j,k;
printf("input range(1~500)");
scanf("%d,%d",&m,&n);
bool flag;// 增加一个标志
for(i=m,j=0;i<=n;i++)
{
flag = true;// 假设是素数
for(k=2;k<=i;k++)
{
if(i%k==0&&i!=k)
{
flag = false;// 标记为合数后再退出循环
break;
}
}
if (flag)// 如果是素数
{
printf("%5d ",i);// printf 语句放到循环外面了
j++;
if(j%6==0)
printf("\n");
}
}
}
全部回答
- 1楼网友:不甚了了
- 2021-04-02 12:39
不知道
- 2楼网友:拜訪者
- 2021-04-02 11:27
没有看见有错啊 看下你的运行结果!!!
- 3楼网友:一叶十三刺
- 2021-04-02 11:10
输入时两个数字之间要加 逗号 如: 50,100再回车
- 4楼网友:几近狂妄
- 2021-04-02 11:03
循环中就不对,因为是循环,照你这种写法,他只要if(i%k==0&&i!=k)不满足,就直接printf("%5d ",i);了,看清楚了啊,他是一个数字,一个数字的往前面循环的啊!!那得打印多少次啊。
循环可以这么写
#include
void main()
{
int m,n,i,j;
printf("input range(1~500)");
scanf("%d",&m);
scanf("%d",&n);
for(j=0;m<=n;m++)
{
for(i=2;i {
if(m%i==0)
break;
if(i>m/2+1)
{
printf("%d ",m);
j++;
if(j == 6)
{
printf("\n");
j=0;
}
break;
}
}
}
}
你还要添加 如果用户输入的是复数或者0,1的情况,自己添加
循环可以这么写
#include
void main()
{
int m,n,i,j;
printf("input range(1~500)");
scanf("%d",&m);
scanf("%d",&n);
for(j=0;m<=n;m++)
{
for(i=2;i
if(m%i==0)
break;
if(i>m/2+1)
{
printf("%d ",m);
j++;
if(j == 6)
{
printf("\n");
j=0;
}
break;
}
}
}
}
你还要添加 如果用户输入的是复数或者0,1的情况,自己添加
- 5楼网友:笑迎怀羞
- 2021-04-02 10:57
scanf("%d,%d",&m,&n);
你写了了一个逗号在这里 那你输入时 两数之间也要是一个逗号
一般是用空格吧
还有 你没有考虑m=1的情况
其实你把m=1,m=2 的情况列举出来
for(k=2;k<=i;k++) 这个循环 就不要循环到k<=i ,到k<根号i 就可以了 会省很多次循环
而且这里if(i%k==0&&i!=k) 的i!=k 这个条件也可以不要了
最后 你的程序 在输出素数时 一个素数会重复输出几次 这是你程序设计的问题了
我改了一下 在这还得请原谅我改了你的代码 我是很不喜欢别人改我的代码的 呵呵
for(i=m,j=0;i<=n;i++)
{
for(k=2;k{
if(i%k==0)
break;
}
if(k==i)//如果 没有发生break 则说明这个数不能被 2到自己(自己除外之间的数整除 即 这个数是 素数
{
printf("%5d ",i);
j++;
if(j%6==0)
printf("\n");
}
}
其实 你在程序里 下几个断点 调试运行下去 就会知道这些错误的
那个输入数之间的逗号 我就是调试 才发现的 (我不知道 你写代码是怎么想的 姑且把它作一个小错误吧 )
你写了了一个逗号在这里 那你输入时 两数之间也要是一个逗号
一般是用空格吧
还有 你没有考虑m=1的情况
其实你把m=1,m=2 的情况列举出来
for(k=2;k<=i;k++) 这个循环 就不要循环到k<=i ,到k<根号i 就可以了 会省很多次循环
而且这里if(i%k==0&&i!=k) 的i!=k 这个条件也可以不要了
最后 你的程序 在输出素数时 一个素数会重复输出几次 这是你程序设计的问题了
我改了一下 在这还得请原谅我改了你的代码 我是很不喜欢别人改我的代码的 呵呵
for(i=m,j=0;i<=n;i++)
{
for(k=2;k{
if(i%k==0)
break;
}
if(k==i)//如果 没有发生break 则说明这个数不能被 2到自己(自己除外之间的数整除 即 这个数是 素数
{
printf("%5d ",i);
j++;
if(j%6==0)
printf("\n");
}
}
其实 你在程序里 下几个断点 调试运行下去 就会知道这些错误的
那个输入数之间的逗号 我就是调试 才发现的 (我不知道 你写代码是怎么想的 姑且把它作一个小错误吧 )
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯