得之:
因一非质数必有一约数大于等于√n,一约数小于等于√n,
可得,求质数循环 for(int j=2;j<=(int)sqrt(i);j++)
自解:
#include<bits/stdc++.h>
using namespace std;
int main(){
bool isPrime(int i);
int L;
cin>>L;
int c=0,sum=0;
for(int i=2;;i++)
{
if(isPrime(i)) //i是质数
{
if(sum+i<=L)
{
sum+=i;
c++;
cout<<i<<endl;
}
else
break;
}
}
cout<<c;
return 0;
}
bool isPrime(int i)
{
for(int j=2;j<=(int)sqrt(i);j++)
{
if(i%j==0||i==2)
return 0;
}
return 1;
}