永发信息网

c语言求超级素数

答案:2  悬赏:60  手机版
解决时间 2021-04-15 23:37
c语言求超级素数
最佳答案
你的求超级素数的C语言程序,我帮你改好了,你看看吧,运行结果没有问题(因为运行结果太长,我就不在这里贴出来了,你自己运行一下就行了.)
#include 
int main()
{
int i,j,k,m,n,flag=1;
for(i=100;i<=9999;i++)
{
 for(j=2;j   if(i%j==0)
    break;
 if(j==i) 
 {
  if(i<=999)
  { 
   flag=1;
    m=i;
   for(k=0;k<2;k++)
   { 
    m=m/10;
    for(n=2;n      if(m%n==0)
      break;
    if(n==m){
    }else flag=0;
   }
    if(flag==1)
    printf("%d ",i);
  }
  if(i>999)
  {
   flag=1;
    m=i;
    for(k=0;k<3;k++)
   {
    m=m/10;
    for(n=2;n     if(m%n==0)
      break;
    if(n==m){
    }else flag=0;
    }
    if(flag==1)
    printf("%d ",i);
  }
 }
}
return 0;
}
全部回答

逻辑乱得有点厉害,如for(n=2;n    if(m%n==0)
break;
这里的break;只结束for(n=2;...这个循环,还在前一个for(k=0;k<3;k++)循环中;可是break;就意味着m已经不是素数了,那么整个m所在的3位数就不是超级素数,还有什么必要继续做for(k=0;k<3;k++)这个循环?这种题比较好的结构是弄一个素数判断函数,不断用原数和它不断除以10的数调用,都返回“真”的就是超级素数,否则不是。代码如下——#include "stdio.h"
int prime(int n){//素数
int i;
if(n>2 && !(n&1) || n<2)
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int i,j,k;
for(k=0,i=101;i<=9999;i+=2){
for(j=i;j>0;j/=10)
if(!prime(j))
break;
if(!j)
printf(++k%10 ? "%5d" : "%5d ",i);
}
if(k%10)
printf(" ");
return 0;
}
运行结果:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
装载机夏季用什么型号机油
辛唐米娜的《逃离爱情》在网上哪里可以看得到
天书奇谈宠物悟性
为什么盆栽的树叶变黄了
DNF流光45和50的穿一起有套装属性吗
我以前吃过芒果而出现嘴唇肿胀,到现在2年了
时尚先锋在什么地方啊,我要过去处理事情
寻仙 天晶石颗粒有什么方法得到
绍兴车站到湖州的洞车一天的班次
有没有偏瘫是信迷信信好的
创业励志语录大全,创业励志成语大全八字成语
淘宝网营运资金管理建议和对策
广州南海中学(即11中)要多少分录取?
基金的收益由什么决定?
油麻地到澳门
推荐资讯
用联通卡开通的超级QQ掉了后怎么激活重新开?
cctv-10《走近科学》-钱学森的观后感
谁能给我个天龙八部大号谢谢各位啦
浪琴鲜花店地址在哪,我要去那里办事
怎么在网吧打开组策略
進AVA出現這東西不能玩 would you like to se
积极正能量励志的句子,励志正能量句子
亚克西新疆风味餐厅怎么去啊,有知道地址的么
第一次女孩会有**吗
儿子咳嗽怎么办?
WIFI无线上网的“WIFI”用中文怎么读?
江华奶粉地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?