c程序轉為c#代碼

sunylf 2012-09-18 04:57:14
int CompositeNumFilterV3(int n)
{
int i, j;
// 素数数量统计
int count = 0;
// 分配素数标记空间,明白+1原因了吧,因为浪费了一个flag[0]
char* flag = (char*)malloc( n+1 );
// 干嘛用的,请仔细研究下文
int mpLen = 2*3*5*7*11*13;
char magicPattern[mpLen];
// 奇怪的代码,why,思考无法代劳,想!
for (i=0; i<mpLen; i++)
{
magicPattern[i++] = 1;
magicPattern[i++] = 0;
magicPattern[i++] = 0;
magicPattern[i++] = 0;
magicPattern[i++] = 1;
magicPattern[i] = 0;
}
for (i=4; i<=mpLen; i+=5)
magicPattern[i] = 0;
for (i=6; i<=mpLen; i+=7)
magicPattern[i] = 0;
for (i=10; i<=mpLen; i+=11)
magicPattern[i] = 0;
for (i=12; i<=mpLen; i+=13)
magicPattern[i] = 0;

// 新的初始化方法,将2,3,5,7,11,13的倍数全干掉
// 而且采用memcpy以mpLen长的magicPattern来批量处理
int remainder = n%mpLen;
char* p = flag+1;
char* pstop = p+n-remainder;
while (p < pstop)
{
memcpy(p, magicPattern, mpLen);
p += mpLen;
}
if (remainder > 0)
{
memcpy(p, magicPattern, remainder);
}
flag[2] = 1;
flag[3] = 1;
flag[5] = 1;
flag[7] = 1;
flag[11] = 1;
flag[13] = 1;

// 从17开始filter,因为2,3,5,7,11,13的倍数早被kill了
// 到n/13止的,哈哈,少了好多吧
int stop = n/13;
for (i=17; i <= stop; i++)
{
// i是合数,请歇着吧,因为您的工作早有您的质因子代劳了
if (0 == flag[i]) continue;

// 从i的17倍开始过滤
int step = i*2;
for (j=i*17; j <= n; j+=step)
{
flag[j] = 0;
}
}

// 统计素数个数
for (i=2; i<=n; i++)
{
if (flag[i]) count++;
}

// 因输出费时,且和算法核心相关不大,故略

// 释放内存,别忘了传说中的内存泄漏
// free(flag);

return count;
}
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunylf 2012-09-20
  • 打赏
  • 举报
回复
一樓的大哥,能花點時間具體化么?
AndyZhang 2012-09-19
  • 打赏
  • 举报
回复
将malloc换位new
将memcpy换为Arry.copy
sowhat_Ah 2012-09-19
  • 打赏
  • 举报
回复
1.把C的代码封装成dll,在C#中直接调用;(C#中dllimport关键字)

2.在C#中直接写非托管代码;(C#中unsafe关键字)
LAN_YT 2012-09-19
  • 打赏
  • 举报
回复
楼主如果着急用,在C#中有个unsafe关键字,可以看看他的用法
图灵狗 2012-09-19
  • 打赏
  • 举报
回复
最好的方法是:
1、把C代码都抽取出来,编译生成DLL文件;
2、在C#中导入DLL文件,访问其接口函数。
这样安全和非安全的代码分开维护。
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧