#include<stdio.h>
long long a(long long n)
{long long i;
if(n<=1)return 0;
for(i=2;i<n;i++)
if(n%i==0)return 0;
return 1;
}
int main()
{
long long m,i,j=0,s=0;
scanf("%lld",&m);m++;
while(j!=5)
{if(a(m))
{j++;s+=m;
}m++;
}printf("s=%lld",s);
return 0;
}
结果超时了,怎么改啊?
该回答引用ChatGPT
修改如下
#include <stdio.h>
#include <math.h>
int is_prime(long long n) {
if (n <= 1) {
return 0;
}
if (n == 2) {
return 1;
}
if (n % 2 == 0) {
return 0;
}
for (long long i = 3; i <= sqrt(n); i += 2) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
long long m, i, j = 0, s = 0;
scanf("%lld", &m);
m = m % 2 == 0 ? m + 1 : m;
while (j != 5) {
if (is_prime(m)) {
j++;
s += m;
}
m += 2;
}
printf("s=%lld", s);
return 0;
}
修改如下,供参考:
#include<stdio.h>
long long a(long long n)
{
long long i;
if (n < 4) return n > 1; //if (n <= 1) return 0; 修改
for (i = 2; i * i <= n; i++) //for (i = 2; i < n; i++)修改
if (n % i == 0) return 0;
return 1;
}
int main()
{
long long m, i, j = 0, s = 0;
scanf("%lld", &m); m++;
while (j != 5)
{
if (a(m))
{
j++; s += m;
}m++;
}printf("s=%lld", s);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: