dzl_kite
dzl_kite
2017-10-18 01:00
采纳率: 100%
浏览 1.2k

为什么无法输出10到99随机素数?

#include
#include
#include
using namespace std;
//void str_shushu();

int main()
{
str_shushu();
system("pause");
return 0;
}

void str_shushu()
{
int n=0;
for (int i = 0; i < 10; i++)
{

        int flag = 1;
        //srand((int)time(NULL));
        n = rand() % 89 + 10;
        for (int j = 1; j < n; j++)
        {
            if (n % j == 0)
                flag = 0;
                n = 0;
                break;
        }
        if (flag == 1)
            cout << n<< " " << endl; break;
}

}

# 程序逻辑上我已经看了好多次,编译器是通过的,但就是无法输出结果,求大神们帮我看一下?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • caozhy
    已采纳
     //srand((int)time(NULL));
    这个不要注销
    
    if (n % j == 0)
    {
                    flag = 0;
                    n = 0;
                    break;
    }
    这里缺少花括号
    
    点赞 评论
  • zxpcz
    枫叶~飘 2017-10-18 01:47

    //
    支持楼主,如果算法没问题,那就是逻辑错误,这个编译器是检查不出来的。注意:**对于初学编程者,一定要注意编写程序的规范,能提升很高的效率**

    点赞 评论
  • Debbie_wxg
    大佬带带我鸭 2017-10-18 01:48

    if (flag == 1)
    { cout << n<< " " << endl; break; }

    这里缺少花括号

    点赞 评论
  • lai_guo_liang
    lai_guo_liang 2017-10-18 02:35

    问题一:这个if的花括号给漏了
    if (n % j == 0) {
    flag = 0;
    n = 0;
    break;
    }

        问题二:
        for (int j = 1; j < n; j++) 改为for (int j = 2; j < n; j++)
        j的初始值应该是2,如果是1的话,任何大于0的整数%1都==0
    
    点赞 评论
  • shihengzhen101
    AlbertS 2017-10-18 03:52

    if (n % j == 0)
    flag = 0;
    n = 0;
    break;
    没有大括号

    点赞 评论
  • dzl_kite
    dzl_kite 2017-10-23 12:26

    #include
    #include
    #include
    using namespace std;
    void str_shushu();
    int main()
    {
    str_shushu();
    system("pause");
    return 0;
    }
    void str_shushu()
    {
    int n = 0,i=0;
    srand(time(0));
    while(i<=10)
    {
    int flag = 1;
    //srand(time(0));
    n = rand() % 89 + 10;
    for (int j = 2; j < n; j++)
    {
    if ((n % j) == 0)
    {
    flag = 0;
    break;
    }
    }
    if (flag == 1)
    {
    cout << n << " " << endl;
    i++;
    }
    }
    }

    在诸位的帮助下我已经解决问题了,但是如果一旦把srand()放在while循环里就会输出同样的十个素数,放在while外面则正常,这是为什么?

    点赞 评论

相关推荐