质数个数:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int n,m,k,num;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&m);
if(m==1)
{
cout<<1<<endl;
continue;
}
num=1;//统计质数的个数
for(int i=2;i<40000;i++)
{
if(m<2) break;
k=1;
while(m%i==0)
{
k++;
m/=i;
}
num*=k;
}
if(m>1)num++;
cout<<num<<endl;
}
}
return 0;
}
素数打表一:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int a[10001];int vis[10001];
int main()
{
int n=10000;
for(int i=0;i<=n;i++)
vis[i]=1;
a[1]=0;int sum=0;
for(int i=2;i<=sqrt(n);i++)
{
if(vis[i])
{
for(int j=2;j<=n/i;j++)
{
vis[i*j]=0;
}
}
}
for(int i=1;i<=n;i++)
{
if(vis[i])
{
cout<<i<<" ";
sum++;
}
}
cout<<endl;
cout<<sum<<endl;
return 0;
}
素数打表二:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
int count=0;
int prime[10000],vis[10000];
while(scanf("%d",&n)!=EOF)
{
count=0;
memset(vis,0,sizeof(vis));
for(int i=2;i<=n;i++)
{
if(!vis[i])
prime[count++]=i;
for(int j=i+i;j<=n;j+=i)
vis[j]=1;
}
for(int i=0;i<count;i++)
printf("%d ",prime[i]);
cout<<endl;
}
return 0;
}