十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
创新互联公司专注于平顺企业网站建设,自适应网站建设,商城网站建设。平顺网站建设公司,为平顺等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
#include math.h
int isprime(int n) {
int i;
if (n==2 || n==3) return 1;
if (n%2==0) return 0;
for (i=3;i=sqrt(n);i+=2) {
if (n%i==0) return 0;
}
return 1;
}
int main() {
double sum = 0.0;
int i;
for (i=3;i=100;i++) {
if (isprime(i)) {
sum += sqrt(i);
}
}
printf("3-100,素数平方根之和:%f\n", sum);
return 0;
}
你的第2个for循环的自增写错了。应该自增1,即j++。j初始值应该是2.
第2个for循环的作用是检测i是否能被1到i的平方根之间的整数整除,如果有1个能整除,就不是素数,所以从2开始,每一个数都需要检测,所以j每次增加1,不是增加2.
第2个if条件写错了,应该是jsqrt(i)
完整fun函数代码如下,你可以参考一下。
double fun(int n){
int i,j;
double sum=0;
for(i=3;i=n;i++){
for(j=2;j=sqrt(i);j++){
if(i%j==0){
break;
}
}
if(jsqrt(i)){
sum+=sqrt(i);
}
}
return sum;
}
#include stdio.h
#include stdlib.h
#include math.h
int isprime(int m) {
int squareRoot = (int)sqrt(m);
if (m = 1)
return 0;
for (int i = 2; i = squareRoot; i++) {
if (m % i == 0) {
return 0;
}
}
return 1;
}
long sumofprime(int n) {
long int sum = 0;
for (int i = 0; i n; i++) {
if (isprime(i)) {
sum += i;
}
}
return sum;
}
void output(long int n) {
printf("%ld", n);
}
int main() {
long int n = 0;
printf("输入范围:");
scanf("%ld", n);
n = sumofprime(n);
output(n);
system("PAUSE");
return 0;
}
这么写就对了!!!
#includestdio.h
#includemath.h
int isprime(intn)
{for(inti=2;i*i=n;i++)
if(n%i==0)return 0;
return n1;
}
int main()
{int n,i;
double s=0;
scanf("%d",n);
for(i=3;i=n;i+=2)
if(isprime(i))s+=sqrt(i);
printf("%.3lf\n",s);
return 0;
}
输出结果
扩展资料
求3-N间所有素数的平方根之和
#includemath.h
#includestdio.h
doubl efun(intn)
{
doubles=0.0;
inti,j,flag=1;
for(i=3;i=n;i++)
{
for(j=2;ji;j++)
{
if((i%j==0)(j=(i+1)))
{
flag=0;
break;
}
}
if(flag==1)
s+=sqrt(i);
}
returns;
第一个是正确的
我来解释
double fun (int n )
{
int m , k, i ;
double s=0.0 ;
for(m=3 ; m=n ; m++)
{
k=sqrt(m);//如果一个数不是素数 那么他一定有一个因子是小于其平方根的。
比如m不是素数 设m=i*j 假设ij 那么 i^2=m=j^2
得出isqrt(m)j;所以只需要比到m的平方根就可以了
for(i=2;i=k;i++)
if (m%i == 0) break;
if (i=k+1)//这里其实改为ik就可以了 因为已经判断他没有小于k的因子了 而除数又同时大于k
那么就能判定这个数就是素数
s+=sqrt(m);
}
return s;
第二个是错误的 你自己运行看看就知道了