C语言编程题代码哪里有错求100到200之间的素数
答案:4 悬赏:60
解决时间 2021-11-06 03:38
- 提问者网友:夕夏残阳落幕
- 2021-11-05 13:31
#include
#include
int isprime(int n)
{int i;
int up;
int ret = 1;
up = sqrt(n);
for (i=2; i<=up; i++)
{if (n%i==0)
{ret = 0;break;}
}return ret;}
int main()
{int n;
int count=0;
for (n=2; n<200; n++)
{
if (isprime(n))
count++;}
printf("%d\n",count);
for (n=2; n<200; n++)
{
if (isprime(n))
printf("%d ",n);}
printf("\n");
return 0;}
最佳答案
- 二级知识专家网友:深街酒徒
- 2021-11-05 14:35
#include
#include
int isprime(int n)
{int i;
int up;
int ret = 1;
up = sqrt(n);
for (i=2; i<=up; i++)
{if (n%i==0)
{ret = 0;break;}
}return ret;}
int main()
{int n;
int count=0;
for (n=100; n<200; n++) //这里n=2改为n=100
{
if (isprime(n))
count++;}
printf("%d\n",count); //这里的逗号你是中文输入法输入的,出错,改为英文输入法输入即可
for (n=100; n<200; n++) //这里n=2改为n=100
{
if (isprime(n))
printf("%d ",n);}
printf("\n");
return 0;}
全部回答
- 1楼网友:旧事诱惑
- 2021-11-05 17:06
0. 说明一下,以后如果问问题的话,你可以把你的错误说出来,大家都不知道你的错是什么,就没法帮你正确的解决
1. 题目是要求100到200之间的素数,而实际上你求的是0到200之间的素数,因此主函数中的两个for循环的起始索引n=2应该修改为n=100
2. printf("%d\n",count);这一行我不知道是你手误还是怎么回事,中间的逗号你用的是中文逗号,应该修改为英文逗号
3. 程序格式和效率方面也有点儿小问题。素数的判断结果是正确的,因此我没看你的那个isprime函数内部,效率方面主要是两个for循环,几乎是完全一样的,因此可以放到一起做,每找到一个素数,就把count++,然后将这个素数输出。循环外部再输出count的值,表示统计的该范围内素数总数。格式就不说了,大括号和缩进都比较乱,可读性比较差,这方面可以看一些编程风格方面的书籍来形成适合自己的良好的编程风格。
- 2楼网友:无字情书
- 2021-11-05 16:59
写个求素数的给你 你那个看的头是晕的
所谓素数是不能被2到本身开方之间任一整数整除的整数
#include<stdio.h>
#include<math.h>
main()
{ int i,j,k;
for(i=101;i<200;i=i+2)
{ j=sqrt(i) ;
for(k=2;k<=j;k++)
if(i%k==0) break;
if(k>j)
printf("%d",i );
}
}
- 3楼网友:输掉的尊严
- 2021-11-05 15:20
#include
#include
int isprime(int n)
{
int i;
int up;
int ret = 1;
up = (int)sqrt(n);
for (i=2; i<=up; i++)
{
if (n%i==0)
{
ret=0;
break;
}
}
if(ret==1)
printf("%d ",n);
return ret;
}
int main()
{
int n;
int count=0;
for (n=100;n<200;n++)
{
if(isprime(n))
count++;
}
printf("100~200共有%d个素数\n",count);
printf("\n");
return 0;
}
我用手机记事本编辑的。你试试,对的加分哦哦。
我要举报
大家都在看
推荐资讯