| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1060 人关注过本帖
标题:还是关于素数
只看楼主 加入收藏
计院人
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-10-15
收藏
 问题点数:0 回复次数:10 
还是关于素数

这是我想出来的关于素数的求法,思路是一个数除以比他小的所有数,如果只有2个数能整除(1和自己本身)的话,那么这个数就是素数!我不知道这样对不对,这是我的代码,或者是代码错了,知道的请给我指出来!先谢了
#include "stdio.h"
void main()
{
int i,j,count=0;
for(i=2;i<=10;i++)
{
for(j=1;j<=i;j++)
{
if(i%j==0)
count++;
}
if(count==2) //如果等于2则说明他是素数
printf("%d\n",i);
}
}

搜索更多相关主题的帖子: 素数 
2006-10-17 21:44
编程新贵
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-8-11
收藏
得分:0 
以下是引用计院人在2006-10-17 21:44:39的发言:

这是我想出来的关于素数的求法,思路是一个数除以比他小的所有数,如果只有2个数能整除(1和自己本身)的话,那么这个数就是素数!我不知道这样对不对,这是我的代码,或者是代码错了,知道的请给我指出来!先谢了
#include "stdio.h"
void main()
{
int i,j,count=0;
for(i=2;i<=10;i++) //for(i=3;i<=10;i++)你是求10以内的素数,那么就应该从3开始了(1和2非素数)
{
for(j=1;j<=i;j++) //for(j=2;j<i;j++)要判断素数,那要把1和本身排除啊!
{
if(i%j==0)
count++;
}
if(count==2) //count==1 count的初始值是0啊,++以后怎么可能是2.
printf("%d\n",i);
}
}



如果以后判断n个数中找出素数,那么取出sqr(n)前面的数和n进行%就可以了

[此贴子已经被作者于2006-10-17 21:58:20编辑过]

2006-10-17 21:57
编程新贵
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-8-11
收藏
得分:0 
做完素数,就能做哥德巴赫猜想了!!
2006-10-17 22:03
计院人
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-10-15
收藏
得分:0 

还是不怎么对吧,2应该是最小的素数,他能被1和自己整除!
可能你还不知道我是怎么想的,我要求的就是1和他本身,那个count得到的数值2就是1和他本身这2个数。i%j==0判断是否能整除,如果能则+1。
就拿2来说吧,他能被1和他本身整除,3能被1和他本身整除,这些count都得2,则打印结果,而其他得数如4,这能整除得有1,2,4三个数,count==3,就不能打印!
不知道我这样想对不对,还请帮忙!


2006-10-17 22:06
计院人
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-10-15
收藏
得分:0 
以下是引用编程新贵在2006-10-17 22:03:19的发言:
做完素数,就能做哥德巴赫猜想了!!

呵呵,是啊,我就是为了哥德巴赫才想素数的,我也知道一些关于素数的算法,但自己想了个那个出来,没能实现就想找出原因,希望能个忙


2006-10-17 22:07
编程新贵
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-8-11
收藏
得分:0 
以下是引用计院人在2006-10-17 22:06:20的发言:

还是不怎么对吧,2应该是最小的素数,他能被1和自己整除!
可能你还不知道我是怎么想的,我要求的就是1和他本身,那个count得到的数值2就是1和他本身这2个数。i%j==0判断是否能整除,如果能则+1。
就拿2来说吧,他能被1和他本身整除,3能被1和他本身整除,这些count都得2,则打印结果,而其他得数如4,这能整除得有1,2,4三个数,count==3,就不能打印!
不知道我这样想对不对,还请帮忙!

好的知道了,照你的思路来做
for(i=2;i<=10;i++)
{
for(j=1;j<=i;j++)
{
if(i%j==0)
count++;
}
if(count==2)
{ //如果等于2则说明他是素数
printf("%d\n",i);
    count=0;


}
}要把count清0

[此贴子已经被作者于2006-10-17 22:26:32编辑过]

2006-10-17 22:25
计院人
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-10-15
收藏
得分:0 

#include "stdio.h"
void main()
{
int i,j,count;
for(i=2;i<=10;i++)
{count=0;
for(j=1;j<=i;j++)
{
if(i%j==0)
count++;
}
if(count==2)
printf("%d\n",i);
}
}
哦,我懂了,把count初始化到for里面就行了,谢谢指点啊!

2006-10-17 22:27
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 

如果小于等于i的平方根的数都除不尽i,则i必是素数...
for(j=2;j<=(int)(floor(sqrt((double)(i))));j++)
{
if((i%j)==0)
{
printf("i不是素数");
break;
}
else
{
printf("i是素数");
}
}

2006-10-18 00:17
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
说的好啊那你知道为什么是这样的么?怎么证明?你有没有证明过?还是道听途说?对于任何一个整数都成立么?有没有依据阿?不要看一些书上用这样的方法去判断素数,就以为是正确的要是你自己没有证明的话,就不要相信是真的,除非你自己证明是对的!有句话说的是尽信书不如无书!

♂ 死后定当长眠,生前何须久睡。♀
2006-10-18 16:26
计院人
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-10-15
收藏
得分:0 
你是说我的方法吗?

2006-10-18 16:28
快速回复:还是关于素数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024323 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved