山东理工大学OJ练习记录
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
int i,j;
int k = 0;
bool flag;
for (i = 2; i < n ; i++)
{
flag = true;
for (j = 2; j <= i/2 ; j++)
{
if (i % j == 0)
{
flag = false; break;
}
}
if (flag)
{
cout << i<<" ";
k = k + 1;
if (k % 10==0)
cout << endl;
}
}
return 0;
}
这是提交可以通过的算法,下面是我觉得可以更改一下的算法:
(加粗的部分)
[另外判断方法还可以简化。如判别17是是否为素数,只需使17被2~4之间的每一个 整数去除,由于都不能整除,可如判别17是是否为素数,只需使17被2~4之间的每一个 整数去除,由于都不能整除,可以判定17是素数]
所以在下面引用了一个m。
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
int i,j;
int k = 0;
bool flag;
for (i = 2; i < n ; i++)
{
int m;
m = int(sqrt(i));
flag = true;
for (j = 2; j <=m ; j++)
{
if (i % j == 0)
{
flag = false; break;
}
}
if (flag)
{
cout << i<<" ";
k = k + 1;
if (k % 10==0)
cout << endl;
}
}
return 0;
}
注意第二个for (j = 2; j <=m ; j++)!
我也是在写的时候写成了for (j = 2; j <m ; j++),大家还是要注意细心嗷
这是第一次记录练习有感,有什么错误欢迎大家纠正嗷!