用c语言怎样求素数求质数问题!!

c语言:求100-200间所有素数,帮我看一下我写的问题,虽然可以输出素数,但是不能求个数,n等于乱码_百度知道
c语言:求100-200间所有素数,帮我看一下我写的问题,虽然可以输出素数,但是不能求个数,n等于乱码
#include&stdio.h&int sushu(int a){ int j,n=0,s; for(j=2;j&a;j++) {
if(s==0&&a!=j) return 0;
else if(s==0&&a==j)return 1; }}void main(){ int i,j,n,s; for(i=100;i&=200;i++) if(sushu(i))
printf(&%d\t&,i);
n++; } printf(&n=%d&,n);}还有没有其他的思路啊?
提问者采纳
n没有初始化,n=0;加上这句就行了,
提问者评价
谢谢你帮我大忙了
其他类似问题
素数的相关知识
按默认排序
其他2条回答
把INT变量给个注释嘛,写代码习惯不好,要是没看完,真没法读,代码不是写给自己看的。
主函数n 没初始化, sushu里n是干嘛的。。。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言求质数问题。我的编程接下去应该怎么输入。求指教,谢谢!_百度知道
C语言求质数问题。我的编程接下去应该怎么输入。求指教,谢谢!
#include &stdafx.h&#include &stdio.h&int main(int argc, char* argv[]){ int N,a,m;
printf (&Input N:\n&); scanf (&%d&,&N); for (a=2;a&=N;a++) {
for (m=a;m&=a;m--)
if (a%(m-1)==0)
}} return 0;}
#include &iostream&int getPrime(int n, int* p){ int cnt = 0; p[cnt++] = 2; bool flag = for (int i=3;i&=n;i+=2) {
for (int j=2;j&i;j++)
if (i%j == 0)
p[cnt++] = } }int main(){
cout&&&Input n:&; cin&&n; int *p = new int[n]; int cnt = getPrime(n, p); cout&&n&&&以内一共有&&&cnt&&&个素数&&& for (int i=0;i&i++)
cout&&p[i]&&&\t&; cout&& return 0;}
其他类似问题
按默认排序
其他1条回答
直接输入任意数N ,但是你的程序好像不全吧,如果是质数要说明一下N是质数,不是也要有相应的提示。
是不全。应该是输入一个n ,然后显示 2-n之间所有的质数。但是第二个for 语句我不知道应该怎么编
for(intn=2; n&j; n++){for(i=2; i&n; i++){if(n%i==0){}}if(i&=n){printf(&%d &,n);}}
质数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求助:C语言求1至100的所有素数的问题_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:260,135贴子:
求助:C语言求1至100的所有素数的问题收藏
我是新手,谁能帮我解析一下下面的问题:求1至100的之间所有素数。在下列的划线上填空。①②③内各填上什么。为什么?main(){
printf("%d",2);
for(j=3;j&=100)
for(n=2;n&=j;n=n+1)
if( __①___ ) ___②___;
else_____③_____;
if x=2 then printf("%d",j);
这题目好白痴
代码本来就要自己写 第一次听说过要去填别人的代码
题目都打错了 人才
好像题目错了。"%d",不能是2只能J n x是不是这样啊!
这是竞赛题,一字不漏打出来了,所以我看得一头雾水。
j%n==0x++x=0这题不错。傻子会做天才不会的。
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或c语言求质数_百度知道
c语言求质数
#include &stdio.h&#include &conio.h&main(){ int m,n,i,
int p[100];
p[1]=2for (;num&100;num++);{for (i=1,m=2;;){m=p[i] ;if (m&s/2)else if(m*n&s) n++ ;else if (m*n==s) s++ ;else if(m*n&s)i++ ;}printf (&p%d=%ld&,num,s);s++;}
getch();}自己写的,感觉没有问题运行结果总是:p100=2郁闷~~~求错
哦~~被wintc的提醒弄狂了~~是这样的我用p[i]是想表示第i个质数貌似这样有问题??请问还有救吗?能不能实现类似的定义???
提问者采纳
有救!有救!你的思路挺好的,就是编程的时候思路不清晰,没有周全考虑。这是改后的代码#include &stdio.h& #include &conio.h& main() { int m,n,i, int p[100];
s=2; m=1; n=1; num=1; p[1]=2 ; for (;num&100;num++)/*这里的分号应该是你笔误吧O(∩_∩)O*/{for (i=1,n=2;;) /*这里n=2而非m估计也是你笔误?*/{m=p[i] ; if (m&s/2) else if(m*n&s) n++;else if(m*n==s) {s++;i=1;n=2;}/*这里*/else if(m*n&s) {i++;n=2;}/*和这里,仔细想一想,当尝试一个新的数字或尝试一个新的质数时,是不是要把计数变量初始化?*//*编程的时候不要想当然,要通盘考虑,每个变量是否都做了妥善的处理*/} p[num]=s;/*你要用质数表,怎么能不记录质数表呢^o^*/printf (&p%d=%ld\n&,num,s); s++; } getch(); }你的程序运用质数表这点很好,但是你的程序还没发挥到最高效率。里边有一些无用的判断和赋值,而且没有利用mod运算,使程序既复杂又低效。我觉得还是用标准的求质数算法比较好,到处都有,不再说了。
提问者评价
哦,这样啊...不过我还没有学mod命令来着谢谢哥哥
其他类似问题
质数的相关知识
其他4条回答
for (;num&100;num++); 最后一个分号多了
for (;num&100;num++); //&-这里分号有问题
for (;num&100;num++); 最后一个分号去掉,但是我给你在VC上运行了一下,还是不行,你写的算法有问题,我想给你改发现需要改动很大,就没给你改。比如说{for (i=1,m=2;;)m=p[i];这两句就是无用操作,for循环可以用while(1)来代替,p【i】是个固定的值2,可以写为m=2,你自己再看看吧,经典的求质数代码书上都有,我觉得你的算法有问题。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您还未登陆,请登录后操作!
C语言 求100---200之间的素数
#include &stdio.h&
#include &math.h&
void main()
int m,k,i,n=0;
for(m=101;m&=200;m=m+2)
k=sqrt(m);
for(i=2;i&=k;i++)
if(m%i==0)
if(i&=k+1)
printf(&%d&,m);
if(n%10==0)
printf(&\n&);
printf(&\n&);
问题1:for(m=101;m&=200;m=m+2)为什么m要+2?
问题2:k=sqrt(m); 为什么要开平方?
问题3:if(i&=k+1)为什么要比较i&=k+1 ?
可选问题:给程序加详细注释
*前三个问题必须回答。请回答者注意观察自己答案下面的评论*
问题1.显然所有的大于2的偶数都不是素数,这里先定的m=101,在每次加2,就避免了对偶数的运算,使计算简化,(只用50次计算)
问题2.用m除1到k,看能不能除尽,只需要计算到sqrt(m)
因为如果接着计算k到m,实际上后面的计算已经重复了
反正法:假设,m有一个大于 sqrt(m)的因子,设为A,则也存在另一个因子B=m/A,显然B小于sqrt(m),也就是说,通过计算k=B的时候就已经计算了A的情况。
问题3.就是输出时候的条件啊,如果已知计算到k<sqrt(m)<k+1,还除不尽,m也就是素数了
59.50.66.*
though.cool
问题三能不能举个例子呢?
172.16.205.*
还是不明白
好好好好好
回答数:505}

我要回帖

更多关于 c语言求素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信