首页 > 试题广场 >

求出2-100之间的所有质数(素数)

[问答题]

求出2-100之间的所有质数(素数)

内容:

求出2-100之间的所有质数(素数)

#include <iostream>
using namespace std;
int main()
{
int k;
for(int i=2;i<=100;i++)
{
k=0;
for(int j=2;j<=i;j++)
{
if (i%j==0) k=k+1;
}
if(k==1) cout<<i<<endl;
}
return 0;
} 

#include<bits/stdc++.h>
using namespace std;
int p(int n)
{
    for(int i=2;i<=sqrt(n);i++)
        if(n%i==0)
            return 0;
    return 1;
}
int main()
{
    for(int i=2;i<=100;i++)
        if(p(i)==1)
            cout<<i<<endl;
    return 0;
}
'p' 为自定义函数用来判断 ‘i’ 是不是素数,素数是能被  ‘  1  ’  和它本身整除的数。
#include<bits/stdc++.h>
using namespace std;
bool a[110];
int main()
{
    memset(a,true,sizeof(a));
    for(int i=2;i<=100;i++)
        if(a[i]==true)
            for(int j=2;i*j<=100;j++)
                a[i*j]=false;
    for(int i=2;i<=100;i++)
        if(a[i]==true)
            cout<<i<<endl;
    return 0;
}
这是欧拉筛法的程序,原理:
1.首先,从2开始,把2的倍数都标记为合数,然后把下一个未标记的数3标记为素数,再把3的倍数标记为合数,接着把下一个未标记的数5标记为素数,再把5的倍数标记为合数,以此类推,直到标记到N为止。
2.在标记的过程中,每次找到一个素数,就把它的所有倍数都标记为合数。
编辑于 2023-07-28 12:12:17 回复(1)
素数是只能被1和本身整除的数
int main(){
    for (int i=1; i<=m; i++){
        isPrime=ture,
        int m=(int) Math.sqrt(i);
    }
    for (intj=2; j<=m; j++){
        if(i%j == 0){
            isPrime=false;
        }
        if(isPrime){system.out.println(i)i}
    }
return 0;
}

编辑于 2023-07-04 00:21:54 回复(1)
#include <algorithm>
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
bool IsPre(long long x)
{
    static vector<long long> arr = {2,3,5,7};
    for(long long i =arr.back()+2;arr.back() *arr.back()< x;i+=2)
    {
        bool flag = 1;
        for(long long j = 0;j<arr.size() && arr[j]*arr[j]<= i;j++)
        {
            if(i%arr[j] ==0)
            {
                flag = 0;
                break;
            }
        }
        if(flag)
        {
            arr.push_back(i);
        }
    }
    for(long long i = 0;x >= arr[i] * arr[i];i++)
    {
        if(x%arr[i] ==0 )
        {
            return 0;
        }
    }
    return 1;
};

int main() {
    long long a, b;
    int n;
    cin>>n;
    while(n-->0)
    {
        cin>>a>>b;
        if(a>b)
        {
            swap(a,b);
        }
        if(a==1 && IsPre(b))
        {
            cout<<"YES";
        }
        else {
            cout<<"NO";
        }
        cout<<endl;
    }

    return 0;
}
// 64 位输出请用 printf("%lld")
发表于 2024-05-18 17:58:21 回复(0)
#include<stdio.h>
int main()
{
    int sushu[500] = { 0 };
    int i;
    int in;
    int a;
    scanf("%d", &in);
    sushu[0] = 2, sushu[1] = 3;
    int max = 1;
    for (i = 5; i <= in; i+=2)
    {
        for (a = 1; a <= max; a++)
        {
            if (i % sushu[a] == 0)
                break;
            if (a == max)
                sushu[++max] = i;
        }

    }
    for (a = 0; a <= max; a++)
        printf("%d\n", sushu[a]);
    return 0;

}
发表于 2024-03-27 23:52:47 回复(0)