首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → 关于C++编程超级素数问题

关于C++编程超级素数问题

来源:维维整理 发布时间:2010-2-24 19:33:00 人气:

关于C++编程超级素数问题详解,一个n位超级素数是指一个n位正整数,它的前1位,前2位, . . . , 前n位均为素数,例如,7331是个4位超级素数,因为7,73,733,7331均为素数。由键盘输入n (n<9), 然后输出全部的n位超级素数,下面咱们一块来了解一下吧。

#include "stdafx.h"
#include<iostream.h>
#include<math.h>
int prime(int);
int main(int argc, char* argv[])
{
int n,flag=0;
long num,x;
cout<<"一个n位超级素数是指一个n位正整数,它的前1位,前2位,……, 前n位均为素数。"<<endl;
cout<<"想求多少位的超级素数?(n<9)";
cin>>n;
for(int j=pow(10,n-1);j<=pow(10,n);j++)
{
x=j;
if(prime(x)){
while(x/10)
{
if(prime(x/=10))
{if(x==2|x==3|x==5|x==7) flag=1;}
else break;
}
if(flag) cout<<j<<endl;
}
}
return 0;
}
int prime(int n)
{ int i;
if(n<2) return 0;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}

不知我的程序哪里出错了,请高手给出标准答案啊!还有,正确的代码在Visual Studio 2008中应该进行怎样的修改才可以使得正确运行?

正解:看下这个:

#include<iostream.h>
#include<math.h>
int prime(int);
int main(int argc, char* argv[])
{
int n,flag=0;
long x;
cout<<"一个n位超级素数是指一个n位正整数,它的前1位,前2位,……, 前n位均为素数。"<<endl;
cout<<"想求多少位的超级素数?(n<9)";
cin>>n;
for(int j=(int)pow(10,n-1);j<=(int)pow(10,n);j++)
{
x=j;
while(prime(x))
{
x=x/10;
}
if(x==0) cout<<j<<endl;
}
return 0;
}
int prime(int n)
{
int i;
if(n<2) return 0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0) return 0;
}
return 1;
}

相关下载
栏目导航
本类热门阅览