C语言输出所有3位的素数,要求循环次数5000以下!

输出所有3位的素数,要求循环次数5000以下!

没检查到一个素数,则将后面的所有倍数删除

#include<iostream>
using namespace std;
int count=0;
int isprime(int n){  // 判断一个数是否是素数
    for (int i = 2; i*i <= n; i++)
    {
        count++;
        if (n % i == 0)
            return 0;     // 表示不是素数 
    }
    return 1;
}
 
int main()
{
    for (int i = 101; i <= 999; i++)
    {
        count++;
        if (i%2 == 0 || i%3==0||i%5==0||i%7==0) 
           continue;
        if(isprime(i))
            cout<<i<<" ";
    }
    cout<<endl;
    cout<<count<<endl;
    return 0;
} 

只对所有奇数遍历即可

有用请采纳


#include<iostream>
#include<cmath>
using namespace std;

int judge(int num){  // 判断一个数是否是素数
    int rangeNum = sqrt(num) + 1;
    for (int i = 2; i <= rangeNum; i++)
        if (num % i == 0)
            return 1;     // 表示不是素数 
    
    return 0;
}


int main(){
    int nums[900] = {0};    // 一共900个数
    for (int i = 100; i < 1000; i++)    // 先排除掉2, 3, 5的倍数, 这将排除绝大多数 
        if (i % 2 == 0 || i % 3 == 0 || i % 5 == 0)  
            nums[i - 100] = 1;
    
    for (int i = 0; i < 900; i++)
        if (nums[i] == 0 && judge(i + 100))             // 如果不是2, 3, 5的倍数才去进行判断 
             nums[i] = 1;
    
    // 输出素数
    for (int i = 0; i < 900; i++)
        if (nums[i] == 0)
            cout << i + 100 << endl; 
} 

#include <stdio.h>
#include <math.h>
main()
{
int x,k,flag,n=0;
for(x=100;x<=999;x++)
{
flag=1;
for(k=2;k<=sqrt(x);k++)
if(x%k==0)
{flag=0; break;}
if(flag==1)
{
if(n%10==0) printf("\n");
n++;
printf("%5d",x);
}
}
}
这个循环次数有5000以下吗

是不是东院的好兄弟问的哈哈哈哈哈,感谢了哈哈哈哈哈哈