用C语言如何编写100~9999内超级素数的相关问题

超级素数:一个素数依次从低位去掉一位、两位……若所得的数依然是素数如239是超级素数。试求100~9999之内:(1)超级素数的个数;(2)所有超级素数之和;(3)最大的... 超级素数:一个素数依次从低位去掉一位、两位……若所得的数依然是素数如239是超级素数。试求100~9999之内:
(1)超级素数的个数;
(2)所有超级素数之和;
(3)最大的超级素数。
展开
 我来答
_SuperJiaWei
推荐于2018-02-28 · 超过11用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:16.4万
展开全部
个数 和 最大 都不难 关键是找素数,给你代码吧,还有这个不叫超级素数 叫连环素数!
输入5 就有5位 依次类推
#include<stdio.h>
#include<math.h>
bool GetP(int n)
{
if(n==2) return false;
for(int i=2;i<=sqrt(n)+1;i++)
if(n%i==0)
return true;
return false;
}
void dfs(int k,int cnt,int n)
{
if(GetP(k)) return;
if(cnt==n){printf("%d\n",k);return;}
for(int i=1;i<=9;i+=2)
{
int t=k*10;
dfs(t+i,cnt+1,n);
}
}
int main()
{
int n,m=1;
scanf("%d",&n);
for(int i=2;i<=9;i+=m)
{
dfs(i,1,n);
if(i==3) m++;
}
}
匿名用户
2010-04-29
展开全部
#include <stdio.h>
#include <math.h>

bool is_prime(int n);
bool is_super_prime(int n);

bool is_prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}

bool is_super_prime(int n)
{
while(n>0)
{
if (is_prime(n))
n=(int)(n/10);
else
return false;
}
return true;
}
void main()
{
int i,sum=0,num=0,max=0,temp=0;
for(i=100;i<=9999;i++)
{
if (is_super_prime(i))
{
num++;
sum+=i;
if(max<i)
max=i;
}
}
printf("100-9999的超级素数的个数是:%d\n",num);
printf("100-9999的超级素数的和是:%d\n",sum);
printf("100-9999的最大的超级素数是:%d\n",max);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
况颖卿濮卯
2019-01-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:33%
帮助的人:790万
展开全部
个数

最大
都不难
关键是找素数,给你代码吧,还有这个不叫超级素数
叫连环素数!
输入5
就有5位
依次类推
#include<stdio.h>
#include<math.h>
bool
GetP(int
n)
{
if(n==2)
return
false;
for(int
i=2;i<=sqrt(n)+1;i++)
if(n%i==0)
return
true;
return
false;
}
void
dfs(int
k,int
cnt,int
n)
{
if(GetP(k))
return;
if(cnt==n){printf("%d\n",k);return;}
for(int
i=1;i<=9;i+=2)
{
int
t=k*10;
dfs(t+i,cnt+1,n);
}
}
int
main()
{
int
n,m=1;
scanf("%d",&n);
for(int
i=2;i<=9;i+=m)
{
dfs(i,1,n);
if(i==3)
m++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风青逍遥
2012-04-12
知道答主
回答量:35
采纳率:0%
帮助的人:16.5万
展开全部
#include <stdio.h>
int sp(int n)
{
int t, i,m;
for(i = 1;i <= n;i++)
{
t= n % i;
if(t==0 && i != 1 && i != n || n == 1)
{
m = 0;
break;
}
else m = 1;
}
return m;
}

int spor(int n)
{
int m,y,z;
y = n / 10;
z = n / 100;
if(sp(n))
if(sp(y))
m = sp(z);
return m;
}

main()
{
int n , max = 0,i = 0,sum = 0;
for(n=100;n<=999;n++)
{
if(spor(n)==1)
{
i++;
sum = sum + n;
max = n;
}
}
for(n=1000;n<=9999;n++)
{
if(spor(n)==1)
{
if(sp(n / 1000)==1)
{
i++;
sum = sum + n;
max = n;
}
}
}
printf("超级素数个数为%d\n所有超级素数之和为%d\n最大的超级素数为%d\n" , i , sum , max);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杨锐错曼珠
2019-04-12 · TA获得超过3669个赞
知道大有可为答主
回答量:3084
采纳率:33%
帮助的人:151万
展开全部
#include
<stdio.h>
#include
<math.h>
bool
is_prime(int
n);
bool
is_super_prime(int
n);
bool
is_prime(int
n)
{
int
i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return
false;
}
return
true;
}
bool
is_super_prime(int
n)
{
while(n>0)
{
if
(is_prime(n))
n=(int)(n/10);
else
return
false;
}
return
true;
}
void
main()
{
int
i,sum=0,num=0,max=0,temp=0;
for(i=100;i<=9999;i++)
{
if
(is_super_prime(i))
{
num++;
sum+=i;
if(max<i)
max=i;
}
}
printf("100-9999的超级素数的个数是:%d\n",num);
printf("100-9999的超级素数的和是:%d\n",sum);
printf("100-9999的最大的超级素数是:%d\n",max);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式