给定一个大于或等于3的正整数,判断它是不是一个素数.
算法:
S1:输入n的值
S2:i=2
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,打印n不是素数,算法结束;否则执行S5
S5:i=i+1
S6:如果i<=n-1, (n/2、(n)1/2)返回s3;否则打印n是素数
S7:结束
个人建议思路:
1.随机产生一个20位数;
2.将该20位数转换为电脑能够识别的二进制byte流;
3.使用二进制方式进行除运算,判断该数是否是素数;高斯猜测,n以内的素数个数大约与n/lnn相当,或者说,当n很大时,两者数量级相同.20位数在它这个范围(n很大),随机数就比较好找,否则就不好找.其实这是个数学测试问题,不知道搂主为什么要用c#来写,而不用mathmaitic来做.
算法:
S1:输入n的值
S2:i=2
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,打印n不是素数,算法结束;否则执行S5
S5:i=i+1
S6:如果i<=n-1, (n/2、(n)1/2)返回s3;否则打印n是素数
S7:结束
个人建议思路:
1.随机产生一个20位数;
2.将该20位数转换为电脑能够识别的二进制byte流;
3.使用二进制方式进行除运算,判断该数是否是素数;高斯猜测,n以内的素数个数大约与n/lnn相当,或者说,当n很大时,两者数量级相同.20位数在它这个范围(n很大),随机数就比较好找,否则就不好找.其实这是个数学测试问题,不知道搂主为什么要用c#来写,而不用mathmaitic来做.
解决方案 »
- 用线程操作datagridview还是会界面假死
- Winform中的comboBox怎样设置第一行为“请选择”,下面绑定数据库内容
- .net环境下有什么上手快的三维可视化的技术?
- (顶着有分)一个关于socket的问题
- 两个WebForm 窗体之间的 TextBox 怎么传递值呀?
- asp.net下DataGrid数据批量提交问题
- 求Visual Source safe 6.0的下载地址. 能提供FTP也行
- 如何控制IE的信息?
- 请问自己写的DataAccess类用单件模式有问题么?
- 有哪位大侠做过中国电信的固网短信程序?救命啊!!
- 请问c/s下的dataGrid有没有onClick事件,如果没有怎么实现单击的功能
- 如何C#调用DOS程序,并返回结果
其实很多问题都可以用数学来完成,但是对于初学者来说
似乎应该多练习一些程序,这样才有得进步,特别是女生,
本来学计算机,就没什么优势,就更应该努力
我还有个问题想问一下怎样将20位数转换为电脑能够识别的二进制BYTE流
如果能表示的话:
for (int i=1*10E20 +1;; i+=2)//初始时i=100......1,共19个零
{
double k = sqrt(i);
for (int k=2; i<k; i++)
if (i%k==0)
{
printf ("找到一个素数:%d 。",i);
goto exit;else printf (" %d 是素数。",n);
}
如果能表示的话:
for (int i=1*10E20 +1;; i+=2)//初始时i=100......1,共19个零
{
double k = sqrt(i);
for (int k=2; i<k; i++)
if (i%k==0)
{
printf ("找到一个素数:%d 。",i);
goto exit;
}
}
exit:
好久没有写C代码,不知对否
(二进制:1111111111111111111111111111111111111111111111111111111111111111)
(10进制:18446744073709551615),还好搂主老师提出的这个问题不是找出40位数的素数,而是20位数.Int64最大的位数也是20位.
找这个20位数可以在10000000000000000000~18446744073709551615之间进行.至于找40位数的素数,可以将这个40位数分解为多个20位数的和.或者以其他方式分解.(这个难度系数不小的,可以向老师咨询一下)至于将10000000000000000000~18446744073709551615之间的数转换为2进制.
系统函数[C#] System.Convert.ToString()的
public static string ToString(
short value,
int toBase
);
但是它的范围在int32内进行的.可能得使用死方法了.
比如使用原始的算法将一个整数转化为二进制数组.这方面的资料不少.
可以将同样的问题放在VC/MFC板块.可能会得到更有针对性的回答.
如果要入手可以先学习一下c#的基础。
1.比如一些基本控件的使用;
2.对一些常识知识要有个大概的了解;
3.多看msdn;至于写什么样的商业化程序,我个人认为你可仿照别人的软件做。
1.简单如windows 计算器。实现它的大部分功能(别说,这个难度不小的)
2.可以的话,做做数据库方面的东西。在学习里,我知道学籍管理不知道做过多少片了,还要学生作。也可以练练手的。不管怎么说,要多实践,最好能够在外面兼职,最好还有能够讨论的同学。这样可以提高速度的。最后就是坚持了。学校里还是要注重基础。开始是很痛苦的。希望楼主能够挺过.........
你可以看一下RSA ------我在学计算网络的时候看到了RSA,那里好像说的意思是,通过现在有的数学知识我们还无法快速的判断出一素数来,正是因为这点才有RSA这版里有个女孩叫(XIXI公主)你可以找她,问一下,没有没好的办法。