c语言:输出100之内的所有素数,每行输出10个素数。 不要课本上那种很长的,我要简明点的,正确的
答案:2 悬赏:30 手机版
解决时间 2021-11-29 21:23
- 提问者网友:龅牙恐龙妹
- 2021-11-28 22:43
c语言:输出100之内的所有素数,每行输出10个素数。 不要课本上那种很长的,我要简明点的,正确的
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-11-28 23:38
//代码1
#include
int isprime( int n ) {
if( n < 2 ) return 0;
for( int i = 2; i < n; ++i ) {
if( n % i == 0 ) return 0;
}
return 1;
}
int main() {
int cnt = 0;
for( int i = 0; i <= 100; ++i ) {
if( isprime(i) ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}
//代码2
#include
#include
//时间复杂度O(n^2)
int isprime( int n ) {
if( n < 2 ) return 0;
int m = sqrt( n + 0.5 );//这里可以稍微改进一下。
for( int i = 2; i <= m; ++i ) {
if( n % i == 0 ) return 0;
}
return 1;
}
int main() {
int cnt = 0;
for( int i = 0; i <= 100; ++i ) {
if( isprime(i) ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}//代码3
#include
#include
int check[ 110 ];
//时间复杂度O(nloglogn)
void get_table( int n ){
for( int i = 2; i <= sqrt( n + 0.5 ); ++i ) if( !check[i] )
for( int j = i * i; j <= n; j += i ) check[j] = 1;
}
int main() {
get_table( 100 );
int cnt = 0;
for( int i = 2; i <= 100; ++i ) {
if( check[i] == 0 ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}
测试结果如下:
#include
int isprime( int n ) {
if( n < 2 ) return 0;
for( int i = 2; i < n; ++i ) {
if( n % i == 0 ) return 0;
}
return 1;
}
int main() {
int cnt = 0;
for( int i = 0; i <= 100; ++i ) {
if( isprime(i) ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}
//代码2
#include
#include
//时间复杂度O(n^2)
int isprime( int n ) {
if( n < 2 ) return 0;
int m = sqrt( n + 0.5 );//这里可以稍微改进一下。
for( int i = 2; i <= m; ++i ) {
if( n % i == 0 ) return 0;
}
return 1;
}
int main() {
int cnt = 0;
for( int i = 0; i <= 100; ++i ) {
if( isprime(i) ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}//代码3
#include
#include
int check[ 110 ];
//时间复杂度O(nloglogn)
void get_table( int n ){
for( int i = 2; i <= sqrt( n + 0.5 ); ++i ) if( !check[i] )
for( int j = i * i; j <= n; j += i ) check[j] = 1;
}
int main() {
get_table( 100 );
int cnt = 0;
for( int i = 2; i <= 100; ++i ) {
if( check[i] == 0 ){
printf( "%d ", i );
cnt++;
}
if( cnt == 10 ){
cnt = 0;
printf( "
" );
}
}
return 0;
}
测试结果如下:
全部回答
- 1楼网友:野慌
- 2021-11-28 23:50
追答把100改成2,把200改成100还有把5还成10
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯