C语言如何编写1到1000内超级素数
超级素数是指从个位起删除0位、1位、2位……直到只剩最后1位都是素数的十进制正整数。可以自定义一个素数判断函数,对某一正整数n及从个位起每删除1位的新数逐一进行判断,都是素数的则是题解。以下代码先要求输入正整数n,输出2~n之间的所有超级素数:
#include "stdio.h"int prime(int n){//判断素数,素数返回0,否则返回1int i;if(n>2 && !(n&1) || n1)...
n=");if(scanf("%d",&n)!=1 || n<2){printf("Input error, exit...
");return 0;}for(i=2;i<=n;i++){for(t=i;t;t/=10)//从低位删除0位,1位...直到只剩1位都是素数的为超级素数if(prime(t))break;if(!t)printf("%d ",i);}printf("
");return 0;}运行样例如下:
#includeint main(){ char num[1001]; int i,n; memset(num,0x00,sizeof(num)); for(n=2;n<32;n++) for(i=2;i*n<1001;i++) num[i*n]=1; printf("1到1000素数为:
"); for(i=2;i<1001;i++) if(num[i]==0) printf("%d
",i); return 0;}大概和素数表对照了一下,最后几个数是对的.
可以改的地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;说有问题是你的自己上无法编译还是什么情况。
应改为:
#include<stdio.h>
int prime(int n)
{
int i = 0;
for (i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
break;
}
}
if (i * i > n)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i = 0;
for (i = 2; i <= 1000; i++)
{
if (prime(i)==1)
{
printf("%d ",i);
}
}
return 0;
}
扩展资料:
简单C语言算法:
/*TC2.0调试成功*/
#include "stdio.h"
#include "math.h"
/*判断是否为素数*/
int IsPrime(long number);
/*判断此数是否为超级素数函数*/
int IsSuperPrime(long number);
参考资料来源:百度百科-超级素数
这个程序没有问题,我在自己的机子上通过编译了;唯一可以改的小地方是,如果为了让程序运行速度更高,偶数是不用判断的,所以N可以从3开始而且每次加2;你说有问题是你的自己上无法编译还是什么情况。
你的程序是有问题的,因为函数的返回值是for循环的最后一次确定的,在其他的时候n%i==0并没有影响返回值
应改为:
#include<stdio.h>
int prime(int n)
{
int i = 0;
for (i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
break;
}
}
if (i * i > n)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i = 0;
for (i = 2; i <= 1000; i++)
{
if (prime(i)==1)
{
printf("%d ",i);
}
}
return 0;
}
没有问题,完全正确。
只是小细节问题,但不影响程序执行结果。
if(n%i==0)//改一下这里可以提高效率
{return 0;
break;
}
main前最好加个void
谁能告诉我如何用计算机编程的语言比如1和0表示出1到10的数字?
在上面的求和函数的那个例子中,T(n) = n + 1,当 n 增大时,常数 1 对于最后的结果来说越来不越没存在感,如果我们需要 T(n) 的近似值的话,我们要做的就是把 1 给忽略掉,直接认为 T(n) 的运行时间就是 O(n)。这里你一定要搞明白,这里不是说 1 对 T(n) 不重要,而是当 n 增到很大时,丢掉 1 ...
如何用C语言编写1+12+123+1234+12345?
说一下思路,先设立三个变量ar1、ar2、s,分别用于存储数列加法迭代中的次新项、最新项和和值,它们的初值都是零。然后进入一个for循环,其中i为计数变量,它的取值在1和5之间,显然,对这个数列中的每一项,有通项公式:ar2=10*ar1+i 。。。这里空间太小,不再详细叙述了,下面做了它的升级...
...1 0 -1 -1 1 0 -1 -1 -1 0 -1 -1 -1 -1 如何编写?求帮助!!!_百度知...
printf("1 1 1 1 0\\n");printf("1 1 1 0 -1\\n");printf("1 1 0 -1 -1\\n");printf("1 0 -1 -1 -1\\n");printf("0 -1 -1 -1 -1\\n");}
c语言中如何生成1个0到1的随机数
C语言中生成1个0到1的随机数可以执行语句:float b=rand()\/(RAND_MAX+1.0);解析:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;用函数rand取得的随机数除以(...
用完整的汇编语言编写使数码管循环显示0,1,2,3,4,5,6,7,8,9的程序...
程序如下:\/ 用P0口输出到数码管显示0-9 编写:jzy23 交流:paulucy@126.com \/ include<reg52.h> define uint unsigned int define uchar unsigned char \/ 共阴数码管显示码 \/ uchar code display[10]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };\/ 延时函数 功...
在c语言编程中如何将1-10的数从小到大排列。
冒泡法!在我们写程序的时候,通常都会对一组数据进行排序,常用的方法有冒泡法和选择法,我主要写下我对冒泡法的理解和心得。冒泡法:顾名思义,就是把小的数据向前排,也就是向上浮起,并因此进行排序。例:include "stdio.h" 包含头文件 void main() 主函数 { int a[10],t,i,j; 定义要...
用c语言编写循环语句1到6的代码怎么写?
int main(){ int i;for(i = 1; i <= 6; i++){ printf("%d ", i);} return 0;} ```以上代码中,我们定义了一个变量i,并且通过for循环语句进行了6次迭代。每次迭代时,将变量i的值输出到屏幕上,并在输出后添加一个空格。注意,这里使用的是小于等于符号(<=),这是因为我们要...
用c语言编写程序,要求输入一个数,求出1到这个数的和
include <stdio.h>void main(){int i,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i++) sum+=i;printf("sum=%d",sum);} 运行示例:
C语言,编写程序,输出斐波那契序列1, 1, 2, 3, 5, 8, 13,…的前50项...
include <stdio.h>int main(void) { int n; \/\/ 输入一个数字 N int i; \/\/ 第 i 个将要输出的斐波那契数 unsigned __int64 current; \/\/ 第 i 个斐波那契数的值 unsigned __int64 next; \/\/ 下一个(i+1)斐波那契数的值 unsigned __int64 twoaway; \/\/ 下下个(...
怎样用C语言写出1到100的奇数和偶数?
1,将i的初值置为1;2,当i增到101时,停止计算。方法一、include <stdio.h> int main(void){int i = 1, oddsum = 0,evensum = 0;\/\/ oddsum奇数和 evensum偶数和 while(i <= 100)\/\/ 若i<=100则执行循环体 {if(i % 2 != 0)\/\/ 判断是不是奇数,是就累加到奇数 oddsum +=...
贲荷博正: 你的程序是有问题的,因为函数的返回值是for循环的最后一次确定的,在其他的时候n%i==0并没有影响返回值 应改为:#include<stdio.h> int prime(int n) { int i = 0; for (i = 2; i * i <= n; i++) { if (n % i == 0) { break; } } if (i * i > n) { return 1; } else { ...
沙河市17319699595: c语言编写程序计算1000内的10个最大素数然后输出 - ?
贲荷博正: 思路: 1、判断一个数是否是素数的算法自己会写 2、定义一个数组a[10]; 3、从1开始到1000为止,用循环调用第一步的函数,并把返回值赋给a[j], 4、其中j=0~9,并且要保证j始终在这个范围内循环; 5、最后输出数组即可.
沙河市17319699595: 编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语言) - ?
贲荷博正:[答案] 刚好在做C++,顺便帮你做下, #include main() { int a,i,sum=0; printf("素数:\n"); for (a=1;a
沙河市17319699595: 求帮写一个c语言程序.输出1000以内最大的十个素数及它们的和.要求使用简单的if while 语 - ?
贲荷博正: #include <stdio.h> #include <math.h> void main() {int i,j,a,sum=0,count=1;for(i=1000;i>=2;i--){a=sqrt(i);for(j=2;j<=a;j++){if(i%j==0)break;}if(j>a){printf("%d\t",i);sum+=i;count++;}if(count>10)break;}printf("sum=%d\n",sum); } 差不多就是这样了
沙河市17319699595: C语言编程题目求教 编写程序,输出1000以内最大的素数. 这个该怎么写??
贲荷博正: #include<stdio.h> int main( ) {int n,i,a=0; for(n=1000;n>=2;n--) {for(i=2;i<=n-1;i++) if(n%i==0) break; if(i>=n) break;} printf("%d",n); return 0; }
沙河市17319699595: 用C语言求超级素数??
贲荷博正: #include<stdio.h> int f(int n) { int i; for(i=2;i*i<=n;i++) if(n%i==0) return 0; return 1; } main() { int i; for(i=2;i<=1000;i++) if(f(i)==1) printf("%d ",i); }
沙河市17319699595: 1000以内最大的素数计算方法,用c语言while写 ,感谢了,最好有注释... - ?
贲荷博正: 楼主你好 具体代码如下:#include<stdio.h> int main() { int i=0; int j; int max_prime;//保存最大的素数 int isPrime=0;//标记是否是素数 while(i<1000) { j=2; while(j<=i/2) { if(i%j==0)//如果i不能被j整除 { isPrime=0;//标记isPrime为0 break;//跳出j循...
沙河市17319699595: C语言输出100至1000间的素数 - ?
贲荷博正: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25#include <cstdlib> #include <iostream> usingnamespacestd; intmain(intargc, char*argv[]) {inta,b;for(a=100;a<1000;a++){intist=0;for(b=2;b<a;b++){if(a%b==0){ist=1;...
沙河市17319699595: 求1到10001以内素数的C语言程序?
贲荷博正: #include "stdio.h" #include "math.h" void main() { int i,j,n=0; for(i=2;i<=1000;i++) { for(j=2;j<=sqrt(i);j++) { if(i%j==0) break; } if(j>sqrt(i)) { n++; printf("%5d",i); if(n%6==0)//每输出5个换行一次 printf("\n"); } } }
沙河市17319699595: C语言编写超级素数 - ?
贲荷博正: #include<stdio.h> main( ) {int i,j,n=0,t,f=0; for(t=100;t<10000;t++) { i=t; f=1; while(i!=0) { for(j=2;j<i;j++) if(i%j==0) break; if(j!=i){f=0;break;} i/=10; } if(f==1){printf("%5d",t);n++;} } printf("\nn=%d\n",n); }