#include <iostream>
using namespace std;
unsigned short prime[7000]={2};
int sum_prime=0;
void CreatePrimes() //创建一个素数表
{
int i,j,k;
for(i=3,j=1;i<65536;i+=2)
{
for(k=3;k*k<=i;k+=2)if(i%k==0)break;
if(k*k>i)
{
prime[j++]=i;
sum_prime++;
}
}
}
int NextPrime(int N,int X){
if(N<=prime[sum_prime]){ //判断是否在素数表内
for(int i=0;i<=sum_prime;i++){
if(N==prime[i])
return X=prime[i];
if((N>prime[i])&&(N<prime[i+1]))
{
return X=prime[i+1];
}
}
}
else //素数表整除法找下一个素数
while(N){
if(N>2147483647)
break;
bool flag=0;
for(int j=0;prime[j]*prime[j]<=N;j++){
if(N%prime[j]==0)
{
N++; flag=1;break;
}
}
if(flag==0)
return N;
}
}
int main(void)
{
int ni,no;
CreatePrimes();
while(1){
cout<<"请输入一个大于1的整数"<<endl;
cin>>ni;
if(ni<1)
break;
if( NextPrime(ni,no)>2147483647||NextPrime(ni,no)<3)
cout<<"Out of range"<<endl;
else cout<<NextPrime(ni,no)<<endl;
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:我可以为你提供一些常用的编译器来将C++代码转换为MIPS汇编代码,如GNU GCC,但是这个过程需要你有一定的编译器基础和MIPS汇编基础。因此,如果你不熟悉这些工具和技术,可能需要一些时间学习。具体步骤如下:
安装MIPS汇编环境和编译器,例如MARS、QT SPIM、GNU GCC等程序。
在计算机上创建一个C++文件,将代码编写到文件中。确保文件可以编译和运行。
将文件编译为MIPS汇编代码。例如,在使用GNU GCC时,可以使用命令"mips-linux-gnu-g++ -S -o OUTPUT.S INPUT.cpp",其中INPUT.cpp是C++文件的名称。
查看生成的MIPS代码并进行优化。
在MIPS架构的处理器上运行代码,例如使用MARS或SPIM模拟器。注意,为了确保代码正确运行,需要对处理器和模拟器进行一些设置。
总结一下,如果你熟悉这些工具和技术,那么转换过程应该不会太困难。如果你没有相关经验,并且需要更详细的操作步骤,请告诉我,我可以提供更具体的细节。