【发布时间】:2011-11-28 21:03:03
【问题描述】:
我写这段代码是为了显示 1 到 100 之间的素数。唯一的条件是不要使用函数,整个代码应该是内联的。我想问我是否可以进一步改进(优化)它?
#include<iostream>
using namespace std;
int main() {
int i=2,j=2;
cout<<"Prime numbers between 1 and 100 are:"<<endl;
cout<<"2"<<"\t";
while(i!=100) {
for(int j=2;j<i;j++) {
if(i%j==0)
break;
if(j==i-1)
cout<<i<<"\t";
}
i++;
}
cout<<endl;
system("pause");
return 0;
}
【问题讨论】:
-
"唯一的条件是不要使用函数,整个代码应该是内联的。"为什么不编写函数然后打开编译器优化,以便为您内联它们?两全其美。
-
你只需要检查直到
j <= sqrt(i)。 -
您只需要检查奇数。没有可以被偶数整除的素数(除了 2),因此您可以将
j++替换为j=j+2以将搜索时间缩短一半。 -
如果这是作业,请添加作业标签!
-
在这种情况下优化是什么意思?