📄 li2.txt
字号:
# include "MATLAB.h"
# pragma comment(lib."libmx.lib")
# pragma comment(lib."libmat.lib")
# pragma comment(lib."libmex.lib")
# pragma comment(lib."libmatlb.lib")
void ComputePrimes(double*y,int n);
BooL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void mexFunction(int nlhs,mxArray*plhs[],int nrhs,const mxArray*prhs[])
{
//输入/输出参数语法检查
if(nrhs!=1)
{
mexErrMsgTxt("One input required.");
}
else if(nlhs>1)
{
mexErrMsgTxt("Too many output arguments");
}
/*输出参数必须不是复数,为此进行以下语法检测*/
int mrows,ncols;
mrows=mxGetM(prhs[0]);
ncols=mxGetN(prhs[0]);
if(!mxIsDouble(prhs[0]) || !(mrows==1 && ncols==1))
{
mexErrMsgTxt("Input must be a noncomplex scalar integer.");
}
//读入输入变量
double x,*y;
x=mxGetScalar(prhs[0]);
/*Create matrix for the return argument.*/
plhs[0]=mxCreateDoubleMatrix(mrows/*1*/,(int)x,mxREAL);
y=mxGetPr(plhs[0]);
//计算素数
ComputePrimes(y,(int)x);
}
//子程序,判断是否素数
void ComputePrimes(double*y,int n)
{
int index=0,i=2;
while(index!=n)
{
if(IsPrime(i))
{
y[index]=i;
index++;
}
i++;
}
}
//如果是素数,进行输出
BOOL IsPrime(int n)
{
for(int i=2;i<=n/2;i++)
{
if(n%i==0)
return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -