#include
int main()
{
int i;
printf(“输入开头的数字:");
scanf_S(“%d”, &i);
int j;
printf(“输入结尾的数字:“);
scanf_s(“%d”,&j);
int temp;
for(temp = 2;temp
应该是因为两个原因导致输出不达预期,一是没有指定区间来遍历i到j之间的所有数,二是因为求素数的算法错误之处,如第14行的i/temp要改为i%temp,使用Dev-C++ 5.11, 测试如下:
参考链接:
https://easylearn.baidu.com/edu-page/tiangong/questiondetail?id=1727062311914032128&fr=search
#include<stdio.h>
int main()
{
int i;
printf("输入开头的数字:");
scanf("%d", &i);
int j;
printf("输入结尾的数字:");
scanf("%d",&j);
int temp;
int k;
for(k=i;k<=j;k++){ // 遍历i到j之间的所有整数
// 判断当前的数k是否为素数
for(temp = 2;temp<k;temp++)
{
if (k %temp == 0){ // 如果当前的数可以整除2到k-1之间的任意一个数,则不是素数
break;
}
}
if(temp==k) // 如果temp判断到k,则说明k是素数
{
printf("%d ",k);
}
}
}
有帮助,请点击右侧采纳即可!
你用的是中文的 双引号 “” 还有部分中文的括号 (),还用了不存在的scanf函数(scanf_S)
for循环中,,只判断了是否被2整除。
if语句中,比较结果写成了赋值语句(temp=i)
更正代码:
#include<stdio.h>
int main()
{
int i, j, temp;
printf("输入开头的数字:");
scanf("%d", &i);
printf("输入结尾的数字:");
scanf("%d", &j);
for (i; i <= j; i++)
{
int flag = 1;
for (temp = 2; temp < i; temp++)
{
if (i % temp == 0)
{
flag = 0;
break;
}
}
if (flag)
{
printf("%d ", i);
}
}
return 0;
}
“该回答引用ChatGPT”
可以参考下面的方法,如果可行还望点击 采纳,感谢:
#include<cstdio>
#include<cmath>
int main()
{
int start, end;
printf("请输入开始的数字:");
scanf("%d", &start);
printf("请输入结束的数字:");
scanf("%d", &end);
for(int i=start; i<=end; i++)
{
bool is_prime=true;
int sqrt_i=sqrt(i);
for(int j=2; j<=sqrt_i; j++)
{
if(i%j==0)
{
is_prime=false;
break;
}
}
if(is_prime)
{
printf("%d\n", i);
}
}
return 0;
}
这段代码中,我们使用了 C++ 中的 sqrt 函数来计算平方根,同时在判断素数时只需判到平方根即可,从而提高了代码的执行效率。
不知道你这个问题是否已经解决, 如果还没有解决的话: