输出所有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以下吗
是不是东院的好兄弟问的哈哈哈哈哈,感谢了哈哈哈哈哈哈