题目
#include <iostream>
int a[1000000];
using namespace std;
int prime(int n)
{
if(n==1||n==0) return 0;
if(n==2) return 1;
for(int i=2;i<n;i++)
{
if(n%i==0)
{
return 0;
break;
}
}
return 1;
}
int main()
{
int j=0;
int n;
int shu=0;
for(int i=1;i<=1000000;i++)
{
if(prime(i))
{
a[j]=i;
j++;
shu=j;
}
}
while(scanf("%d", &n) != EOF)
{
if(prime(n)==0)
{
cout<<"0"<<endl;
}
else {
for(int i=0;i<shu;i++)
{
if(n==a[i])
{
cout<<i+1<<endl;
}
}
}
}
return 0;
}
但是把前面的判断素数的函数改成
int prime(int n) {
int i, k;
k = (int)sqrt(n);
if (n == 1)
return 0;
for (i = 2; i <= k; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
就可以正常输入,即
#include <iostream>
#include <cmath>
int a[1000000];
using namespace std;
int prime(int n) {
int i, k;
k = (int)sqrt(n);
if (n == 1)
return 0;
for (i = 2; i <= k; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
int main()
{
int j=0;
int n;
int shu=0;
for(int i=1;i<=1000000;i++)
{
if(prime(i))
{
a[j]=i;
j++;
shu=j;
}
}
while(cin>>n)
{
if(prime(n)==0)
{
cout<<"0"<<endl;
}
else {
for(int i=0;i<shu;i++)
{
if(n==a[i])
{
cout<<i+1<<endl;
}
}
}
}
return 0;
}
这是为什么呢?????
你的这个是不是运行超时或者一直不出结果