问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言编程题:超级素数。14

发布网友 发布时间:2023-10-19 12:17

我来回答

4个回答

热心网友 时间:2024-11-26 15:07

/**************************************
大体的思路:先求出1000-9999之间的素数,然后在这些素数中
找出前1、2、3、4位都是素数的数即为超级素数,每次找到一个
超级素数都与之前的超级素数加和,并且记录超级素数个数的变量加1,
并与之前找到的超级素数比较,记录最大的超级素数。
最后输出就可以了。
************************************/
#include <stdio.h>
#define MAX 10000

int prime[MAX] ; //prime数组记录1到9999每个数是否为素数,例如prime[9999]==1表示9999是素数

//searchPrime是找出1到9999之间的所有素数,并保存到prime数组
void searchPrime()
{

int i, j ;

for(i = 0; i < MAX; i++)
prime[i] = 1 ; //所有元素初始化为1,即假定都是素数
prime[0] = 0 ;//0不是素数
prime[1] = 0 ;//1不是素数
//下面开始筛选素数
for(i = 2; i*i < MAX; i++)
{
if(prime[i]) //如果i是素数,把它的倍数都筛掉
for(j = 2*i; j < MAX; j+=i)
{
prime[j] = 0 ; //j是i的倍数,因此j最起码有一个因子是i,所以不可能是素数
}
}
}

int main()
{
int sum ; //sum记录超级素数的和
int i ;
int count ; //count记录超级素数的个数
int max ; //max记录最大的超级素数
int n ;

scanf("%d", &n) ;
searchPrime() ; //初始化Prime数组
count = 0 ;
sum = 0 ;
max = 0 ;
for(i = 1001; i <= n; i++)
{
if(prime[i] && prime[i/1000]
&& prime[i/100] && prime[i/10]) //说明i是超级素数
{
sum += i ;
count++ ;
if(max < i)
max = i ;
}
}
printf("%d\n%d\n%d\n", count, sum, max) ;
return 0 ;
}

//写的仓促,只验证了9999,其他的数字并未验证,有问题再反馈吧。

热心网友 时间:2024-11-26 15:08

你错的地方给你注释了
#include<stdio.h>
int len(int n)
{
if(n/1000!=0)
return 4;
else if(n/100!=0)
return 3;
else if(n/10!=0)
return 2;
else
return 1;
}
void main()
{
int n,t=1,m=0,i,j,k=0,max=0,sum=0,l=0,s[10000]={0};
scanf("%d",&n);
for(j=n;j>1000;j--)
{
for(i=2;i<j;i++)
{if(j%i!=0)
t++;
else
break;
if(t==j-1)
m=j;}
t=1;
k=0;
while(m)
{

for(i=2;i<m;i++)
if(m%i!=0)
t++;
if(t==m-1)
k++;
m/=10;
t=1; /*这里少了t=1*/
}
t=1;
if(k==len(j))
s[j]=j;
}
for(i=0;i<10000;i++)
if(s[i]!=0)
{
sum+=s[i];
l++;
if(max<s[i])
max=s[i];
}
printf("%d\n%d\n%d\n",l,sum,max);//printf("%d\n%d\n%d",l+1,sum,max);数目应该是l
}

热心网友 时间:2024-11-26 15:08

#include<stdio.h>

int isprime( int j ) //判断素数
{
int i;
if ( j<2 )
return 0;
for(i=2;i<j;i++)
if(j%i==0)
return 0;
return 1;
}
void main()
{
    int n,j,max=0,sum=0,l=0;
    scanf("%d",&n);
    for(j=1000;j<n;j++)
    {
int m=j;
        while(m) //检查该数及子数是否全是素数
        {
if ( !isprime(m) )
break;
            m/=10;
        }
if ( !m ) //如果是,则m会变成0
{
sum += j ;
max = j;
l++ ;
}
    }

    printf("%d\n%d\n%d\n",l,sum,max);
}

热心网友 时间:2024-11-26 15:09


int isprime(int x){
int i; 
while (x){
if (x < 2) return 0;
for (i = 2; i < x ; i++)
{
if (x%i == 0)
return 0;
}
x = x / 10;
}
return 1;
}
void main()
{
int n=9999, t = 0, m = 0, i, j , sum = 0, l = 0, s[10000] = { 0 };
/*scanf("%d", &n);*/
for (j = n; j > 1000; j--)
{
if (isprime(j) )
{
s[t++] = j;
sum += j;
}
}
i = 0; j = 0;
for (; i<t; i++) {
printf("%d ", s[i]);
j++;
if (i % 10 == 0) printf("\n");
}
printf("%d\n%d\n%d", t, sum, s[0]);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在线条形码生成 ie地址栏是什么 ie浏览器的官网地址是什么? 团餐定制电话 抖音电商与广东商务厅启动“富域计划” 简单的晚餐晒美食文案句子 简单的晚餐晒美食说说短句 鸭肉炒什么好吃家常做法 为什么越背越记不住 绯牡丹锦多久浇水 绯牡丹养护要点 有没有讲丛林探险的电影,有点玄幻的,或者是科幻的,介绍一下 放在家里的钱凭空消失? 为什么我放在家里的钱会凭空消失?我敢肯定,没有其他人,45 C编程求教!一个素数依次从低位划去一位,二位...若所得的各...1 超级素数是指一个素数依次从低位去掉一位、两位、……所得的数依...8 lol艾克打野应怎么出装?95 cf游戏中怎么切出qq聊天窗口3 如何使土壤透气性及透水性得以改善5 脸上敷了面膜之后有辣辣的感觉,怎么回事585 《红楼梦》——林黛玉读后感。257 菲梦少女启明星歌词是什么7282 上海铭润自动化系统有限公司怎么样? 佛山市金鹰兴业自动化仪表有限公司怎么样? 佛山市顺德区珠江自动化仪表有限公司怎么样? 200分悬赏!!!!请大家帮我推荐一首诗词92 游戏梗,猎妈人是什么意思?290 济宁市中区哪里有华硕平板电脑售后服务点? 大话西游神兵价格比例?比如说1级女魔连击付吸大概是400人民币,而4级... 存储单元的存储单元1 按半字寻址的,MDR就是半字位吗4 武汉泷盛集团有限公司怎么样? 武汉永固万丰建设集团有限公司怎么样? 哪款燃气热水器性价比高?1 你在哪的英文怎么说?39 ...姓穆,今年龙年2月底3月初的女孩子,求起个好名字,谢谢高手指点... 全国奶茶十大品牌有哪些784 美白精华怎么用,欧缇丽祛斑精华怎么用2 急求地铁广播词,要中英文的95 一家县城的文化传媒影视制作公司该如何发展,这里有丰富的旅游资...3 看图猜成语吊着个囊坐在书桌前看着书 请问,用微信里绑定的银行卡里的钱给别人发的红包,过24小时没有领取,退... 关于抒发诗人的雄心壮志的诗句有哪些?3 影视传媒公司的经营范围56 关于翼支付里的摩拜单车,怎么退押金 “抒发诗人雄心壮志或伟大抱负”的诗句有哪些?20 昨天收到去一家影视文化传媒公司做人事专员 不知道怎么样? 在... ...许昌和商丘,这几座城市分别都是哪些朝代的古都? 内江市中区哪里有华硕平板电脑售后服务点? 乐山市中区华硕笔记本电脑售后服务中心在哪里? 华硕平板电脑乐山市中区售后服务点在哪里?