l*3 发帖数: 2279 | 1 我对素数的定义是:
"a是素数 <=> a是大于1的自然数, 且a不被任何小于a的素数整除"
C代码如下:
bool judge_prime(int a)
{
int b;
if (a<=1)
return 0;
else
{
for (b=0;b
{
if(judge_prime(b)&& a%b==0)
return 0;
}
return 1;
}
} |
l*3 发帖数: 2279 | 2 看了这个还认为我的定义有什么 "循环定义" 的问题的人, 我只能说, 你的智商连电脑
都不如.
自己copy下来放电脑上跑跑去, 让电脑告诉你什么是素数吧. |
s**********r 发帖数: 497 | |
l*3 发帖数: 2279 | 4 没懂.
你是在黑我, 还是觉得写的还行?
【在 s**********r 的大作中提到】 : 他喵的你这code...本民工没话说了
|
C**********r 发帖数: 8189 | 5 !
【在 s**********r 的大作中提到】 : 他喵的你这code...本民工没话说了
|
c****p 发帖数: 6474 | 6 太次了。。。
【在 l*3 的大作中提到】 : 没懂. : 你是在黑我, 还是觉得写的还行?
|
l*3 发帖数: 2279 | 7 我只是把定义翻译成代码, 来辅助说明这种定义的合理性.
代码本身一旦优化, 则必然有人跳出来说我写的根本不是我说的定义.
那我就惹一身骚了.
【在 c****p 的大作中提到】 : 太次了。。。
|
c****p 发帖数: 6474 | 8 不是优化不优化的问题。
是能不能运行的问题。
【在 l*3 的大作中提到】 : 我只是把定义翻译成代码, 来辅助说明这种定义的合理性. : 代码本身一旦优化, 则必然有人跳出来说我写的根本不是我说的定义. : 那我就惹一身骚了.
|
t***e 发帖数: 3601 | 9 这个程序肯定不是程序猿写的
应该可以运行
显然 用以下定义编程更快更简洁。
a是大于1的自然数, 且a不被任何小于a的任何 自然数 整除?
我的素数定义还止于初高中时代 |
V********n 发帖数: 3061 | 10 这程序的递归调用部分有问题,不管输入任何a,得到的都是0的结果 |
|
|
w*****3 发帖数: 910 | 11 难道 素数 不是
a是大于1的自然数, 且a不被任何小于a的任何 自然数 整除?
我的素数定义还止于初高中时代
【在 l*3 的大作中提到】 : 我对素数的定义是: : "a是素数 <=> a是大于1的自然数, 且a不被任何小于a的素数整除" : C代码如下: : bool judge_prime(int a) : { : int b; : if (a<=1) : return 0; : else : {
|
z*****n 发帖数: 7639 | 12 这两个是一样的同学。他的那个定义外延更小些。
【在 w*****3 的大作中提到】 : 难道 素数 不是 : a是大于1的自然数, 且a不被任何小于a的任何 自然数 整除? : 我的素数定义还止于初高中时代
|
m**x 发帖数: 8454 | 13 怀疑lz素数定义合理性的xiongyp已经不冒泡很久了。
现在其实只有两个问题。
1. 什么是“定义”的定义
2. 一个定义的等价命题能否称之为定义
因为已经证明了它和原始定义是等价的,虽然有很多人不承认这一点。不过这些人估计
也看不懂C代码,对吧? |
m**x 发帖数: 8454 | 14 lz的code问题就是没有main()入口,所以是无法单独运行的。我补了main(),可以运行:
#include
#include
bool judge_prime(int a);
int main()
{
int innum;
printf("Please enter your number:");
scanf("%d", &innum);
if (judge_prime(innum)) printf("\n%d is a prime number.\n", innum);
else printf("\n%d is not a prime number.\n", innum);
return 1;
}
另外,c语言好像没有bool类型,因为我gcc编译无法通过(用int代替之即可通过)。
但c++有,所以用bool的话g++编译可以通过。 |
p******n 发帖数: 202 | |
t***e 发帖数: 3601 | 16 你再看看。
【在 V********n 的大作中提到】 : 这程序的递归调用部分有问题,不管输入任何a,得到的都是0的结果
|
l*3 发帖数: 2279 | 17 1. 数学上不讨论 "定义" 的定义. "定义" 本身只是一个数学概念. 这就好像 "如果..
.那么..."是一个逻辑概念一样, 你不能给 "如果...那么..." 这个逻辑规则下定义.
可能是汉语本身的局限性吧, 我说不清楚. 不过简单来讲, 就理解成这样好了:
数学中的 "定义", 和一般生活中的 "定义" 不是一个意思, 一般生活中的定义, 相当
于数学中的某种 "概念"/"理念"/"规则", 这些 "规则" 本身,并不能用 "公理体系" 来
讨论.
其实这些 "规则" 就是 "公理体系" 本身. "公理体系" 不做针对自身的讨论. 就好像
数学中, "命题" 不能对证明做出某种性质的判定一样 .
比如我有一个证明. 你要是说 "这个证明错误", 当然是可以的, 只要你指出哪一步没
有使用标准逻辑规则就行了. 但是呢, "这个证明错误" 本身, 并不是一个 "命题", 单
单只是你的一个观点而已, 你要是指出了哪一步没有用标准逻辑规则, 那么我就认可你
说得对, 你要是指不出来, 我就不认可你说得对, 但是这些 "对" 和 "错", 和数学逻
辑中关于命题的 "对" 和 "错", 是不同的.
说了好多废话, 嘿嘿. 其实简要来讲, 对于你的第一个问题, 回答是这样的:
在数学中, 不需要定义 "定义".
2. "定义" 本身在能保证良定义性的前提下, 就可以看做一个命题了, 只有讨论其 "命
题" 属性的时候, 才能说他的 "等价命题", 如果一个 "等价命题" 也具有对某种性质
的描述能力 (意思就是看成定义的话, 具有良定义性), 那么这个 "等价命题" 便诱导
了一个 "定义", 诱导出来的这个定义, 我们称其为是最开始那个标准定义的 "等价定
义"
这么说是不是很清楚? 不过我估计有些人看到这么多引号以后, 就不想看了. 所以
其实好多人的问题, 我觉得来源于 "看帖不仔细".. 所以 ... 我们要 "仔细看帖"...
【在 m**x 的大作中提到】 : 怀疑lz素数定义合理性的xiongyp已经不冒泡很久了。 : 现在其实只有两个问题。 : 1. 什么是“定义”的定义 : 2. 一个定义的等价命题能否称之为定义 : 因为已经证明了它和原始定义是等价的,虽然有很多人不承认这一点。不过这些人估计 : 也看不懂C代码,对吧?
|
l*3 发帖数: 2279 | 18 说这种话的时候, 敢不敢谨慎一点?
至少自己跑一下试试啊....
【在 V********n 的大作中提到】 : 这程序的递归调用部分有问题,不管输入任何a,得到的都是0的结果
|
l*3 发帖数: 2279 | 19 你是指c语言里没有 bool吗还是?
如果是这一点的话, 那我承认我傻逼了.... 其实我从来没编译过这段程序....
【在 c****p 的大作中提到】 : 不是优化不优化的问题。 : 是能不能运行的问题。
|
l*3 发帖数: 2279 | 20 唉.....那看来c语言是没法完全代表定义的理念了.
其实我的int用得不对, 我应该用 unsigned int
c语言中如果没有bool类型的话, 相当于没有形式逻辑的变量, 那就没法从定义一个地
方一个地方的翻译了. |
|
|
l*3 发帖数: 2279 | 21 thx!
我以前还不知道, c语言原来没有bool类型.
行:
【在 m**x 的大作中提到】 : lz的code问题就是没有main()入口,所以是无法单独运行的。我补了main(),可以运行: : #include : #include : bool judge_prime(int a); : int main() : { : int innum; : printf("Please enter your number:"); : scanf("%d", &innum); : if (judge_prime(innum)) printf("\n%d is a prime number.\n", innum);
|
D***r 发帖数: 7511 | 22 你太弱了吧
这两个定义等价个鬼啊
递归函数是无穷延伸的,所以必须规定素数没有上界才有意义
这个证明题是要证明素数没有上界
所以根本不能用递归,一上来就是错的
【在 m**x 的大作中提到】 : 怀疑lz素数定义合理性的xiongyp已经不冒泡很久了。 : 现在其实只有两个问题。 : 1. 什么是“定义”的定义 : 2. 一个定义的等价命题能否称之为定义 : 因为已经证明了它和原始定义是等价的,虽然有很多人不承认这一点。不过这些人估计 : 也看不懂C代码,对吧?
|
t*******r 发帖数: 22634 | 23 用 typedef 自己定义一个。。。
【在 l*3 的大作中提到】 : 唉.....那看来c语言是没法完全代表定义的理念了. : 其实我的int用得不对, 我应该用 unsigned int : c语言中如果没有bool类型的话, 相当于没有形式逻辑的变量, 那就没法从定义一个地 : 方一个地方的翻译了.
|
l*3 发帖数: 2279 | 24 自己先把程序跑一遍去, 再来发言.
注: 请当做c++代码用c++编译器编译.
【在 D***r 的大作中提到】 : 你太弱了吧 : 这两个定义等价个鬼啊 : 递归函数是无穷延伸的,所以必须规定素数没有上界才有意义 : 这个证明题是要证明素数没有上界 : 所以根本不能用递归,一上来就是错的
|
l*3 发帖数: 2279 | 25 +1, 另外, 我又发现一个形式错误.
那就是使用了 a%b 计算出来的 "0" 来当做 bool类型用了. 这不科学.
我应该写a%b!=0, 或者 !(a%b==0), 这样才标准...
【在 t*******r 的大作中提到】 : 用 typedef 自己定义一个。。。
|
t*******r 发帖数: 22634 | 26 你没错,0 可以直接当 bool 用。 == 0 是 false,!= 0 是 true。
但这不等于背后的 formal system 是一种 token,这种情况叫
implicit cast,C/C++ ISO/IEC/IEEE 标准定义的很清楚。
对 bool 型,的确 C 和 C++ 还有所区别。不过我觉得是标准库的差别。
我记得不是很清楚,不过前两周被 porting platform 的 team
抓出来一个,因为我忘了 include 标准库,导致 true 没被定义。
【在 l*3 的大作中提到】 : +1, 另外, 我又发现一个形式错误. : 那就是使用了 a%b 计算出来的 "0" 来当做 bool类型用了. 这不科学. : 我应该写a%b!=0, 或者 !(a%b==0), 这样才标准...
|
t*******r 发帖数: 22634 | 27 sorry 记错了,那次被抓的是 NULL 没被定义。。。true 在 C++
可能是语言的 primitive 。。。谁去给查个 ISO/IEC/IEEE
标准。。。我承认我懒先。。。
【在 t*******r 的大作中提到】 : 你没错,0 可以直接当 bool 用。 == 0 是 false,!= 0 是 true。 : 但这不等于背后的 formal system 是一种 token,这种情况叫 : implicit cast,C/C++ ISO/IEC/IEEE 标准定义的很清楚。 : 对 bool 型,的确 C 和 C++ 还有所区别。不过我觉得是标准库的差别。 : 我记得不是很清楚,不过前两周被 porting platform 的 team : 抓出来一个,因为我忘了 include 标准库,导致 true 没被定义。
|
l*3 发帖数: 2279 | 28 我是指 "从定义翻译成代码" 没有严格翻译的那种 "形式错误", 不是说代码本身用不
了.
【在 t*******r 的大作中提到】 : 你没错,0 可以直接当 bool 用。 == 0 是 false,!= 0 是 true。 : 但这不等于背后的 formal system 是一种 token,这种情况叫 : implicit cast,C/C++ ISO/IEC/IEEE 标准定义的很清楚。 : 对 bool 型,的确 C 和 C++ 还有所区别。不过我觉得是标准库的差别。 : 我记得不是很清楚,不过前两周被 porting platform 的 team : 抓出来一个,因为我忘了 include 标准库,导致 true 没被定义。
|
t*******r 发帖数: 22634 | 29 i c,如果那样的话,C++ 比较好,C++ 语法更严格一点。
而且 C++ 有 STL std::set,不过跟你所说的集合
不是一回事。。。
【在 l*3 的大作中提到】 : 我是指 "从定义翻译成代码" 没有严格翻译的那种 "形式错误", 不是说代码本身用不 : 了.
|