输出指定范围里面的素数{运行结果不是预期结果}


#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);
        }
        
    }
    
}

img

有帮助,请点击右侧采纳即可!
你用的是中文的 双引号 “” 还有部分中文的括号 (),还用了不存在的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 函数来计算平方根,同时在判断素数时只需判到平方根即可,从而提高了代码的执行效率。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^