首页 > 软件 > ,这个代码能帮我看看吗?为啥不对啊?我用的vs2010,求1到100内的素数。

,这个代码能帮我看看吗?为啥不对啊?我用的vs2010,求1到100内的素数。

软件 2022-10-25

输出100以内的素数,这个程序有好心人帮我看下哪里错了吗?

#include int main() { int a[100],i,j; for(i=0;i<100;i++) { a[i]=i+1; } for(i=0;i<100;i++) { for(j=2;j=a[i] && a[i] !=1)printf("%6d",a[i]); //1不是素数,这个比较特殊。 } return 0; }

C++程序要求求1~100的素数,我编写一个,可是输出的结果不符合啊,求大家指点迷津啊

#include using namespace std; void main () { for(int i=2;i<=100;i++) { for(int j=2;j<=i;j++)//j从2开始 { if(j==i)//当j和i相等时说明i没有其他因数,为素数,输出 { cout<用这个程序筛选1至100内的素数怎么不行啊

我修改了你的程序,已经可以正常工作了。

#include
#include
intmain()
{
intm,i;
for(m=1;m<=100;m++){
for(i=2;iif(m%i==0)break;
if(i==m)
printf("%d\n",m);
}
}


你的程序问题在于,for循环未加花括号。如果循环中的语句多于一条,一定要加括号。你的条件语句没有被写到循环里。


希望能帮到你!

c语言写判断1-100中哪些是素数,那些不是,并打印,大神帮我看看我写的程序哪里不妥

你把c作为不是素数的标志,对于每个a如果c=0则不是素数跳出 思路是对的,可是忘了归1啊,所以当判断4时,c被赋值为0了,下次循环时c还是0,所以一直跳出 把c=1移到a循环内部就好了

我用c++编了一个100内素数表的程序,谁能帮我检查一下?

你这代码有问题吧

  1. 你的c=false后用了中文的分号,这样会让你连编译都不过

  2. b应该从2开始

  3. c每次都要还原

改完后代码如下:

#include
#include
usingnamespacestd;
intmain()
{
inta,b;
boolc=true;
for(a=2;a<=97;++a)
{
c=true;
for(b=2;c==true&&b<=97;++b)
{
if(a%b==0&&a!=b)
c=false;
}
if(c==1)cout<}
}

但你这代码太慢,效率是O(n^2)

虽然你现在只有100,但大了你就知道了,差距。。。。。

你的判断素数太慢,是O(n),现在常用的是(根号n的),当然,想要更快可以去查费马定理

根号n的代码如下:

#include
usingnamespacestd;
boolprime(intx)
{
if(x<=1)returnfalse;
if(x==2)returntrue;
if(x%2==0)returnfalse;
for(intu=3;u*u<=x;u+=2)
if(x%u==0)returnfalse;
returntrue;
}
intmain()
{
inta;
booltf;
cin>>a;
tf=prime(a);
if(tf==true)cout<<"YES";
elsecout<<"NO";
return0;
}

标签:素数 信息技术 编程 CC++ C(编程语言)

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18