#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;
}
}
//srand((int)time(NULL));
这个不要注销
if (n % j == 0)
{
flag = 0;
n = 0;
break;
}
这里缺少花括号
//
支持楼主,如果算法没问题,那就是逻辑错误,这个编译器是检查不出来的。注意:**对于初学编程者,一定要注意编写程序的规范,能提升很高的效率**
if (flag == 1)
{ cout << n<< " " << endl; break; }
这里缺少花括号
问题一:这个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
if (n % j == 0)
flag = 0;
n = 0;
break;
没有大括号
#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外面则正常,这是为什么?