C语言求助:将10和10000的数中的质数取出,如果该质数的十位和百位相加后仍为质数,建个文件,将质数放进去
#include
#include
int isprime(int n)
{
int i;
for(i=2;i<=sqrt(n);++i)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
FILE *fp;
int i;
fp=fopen("prime.txt","w");
for(i=10;i<=10000;++i)
{
if(isprime(i))
fprintf(fp,"%d
",i);
}
fclose(fp);
return 0;
}
能被2,3,5整除,就是能被2×3×5=30整除
这样的四位数,有
(1)最大的一个:9990
`——做法:用最小的五位数10000÷30=333余10,用10000-10=9990
(2)有两个数位上是质数:这两个质数只能在千、百、十位去安排。
因为要最大,所以别安排在千位,否则就不 最大;
因为10以内最大的质数是7,所以百位是7;
因为是3的倍数,所以9+7+x+0=16+x 是3的倍数,所以十位是5。
(3)结论:这个最大的四位数是 9750
#include <string.h>
#include <stdlib.h>
#include <math.h>
int ispri(int n)
{
for(int i=2;i<=sqrt((double)n);i++)
{
if(n%i==0)
return 0;
}
if(n==1||n==0)
return 0;
return 1;
}
int main()
{
FILE* fp=fopen("d:\\pt.txt","w+");
char is[6];
for(int i=10;i<10000;i++) //两位数的百位以0计算,如果没有百位的话,那就i从100起
{
if(ispri(i))
{
if(ispri((i/10)%10+(i/100)%10))
{
itoa(i,is,10);
fwrite(is,strlen(is),1,fp);
fputc(' ',fp);
}
}
}
fclose(fp);
return 0;
}
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
void main()
{
int i,count=0;
FILE *fp;
int isprime(int m);//函数声明
int isprime2(int m);//函数声明
if((fp=fopen("c:\\prime.txt","w+b");)==NULL)
exit(0); //未成功打开文件,退出程序
for(i=101;i<=200;i++)
{
if(isprime(i)&&isprime2(i))
{
count++;
fprintf(fp,"%4d ",i);
}
}
fprintf(fp,"\n一共%d个",count);
fclose(fp);
}
int isprime(int m)//判断数字是否为素数的函数
{
int i,k;
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k)return TRUE;
else return FALSE;
}
int isprime2(int m)//判断十位和百位之和是否为素数
{
int k,i,t=0;
t+=m%100/10;
t+=m%1000/100;
if(t==1)return 0;
k=sqrt(t);
for(i=2;i<=k;i++)
if(t%i==0)
break;
if(i>k)return TRUE;
else return FALSE;
}
C语言编程:求1-10000之间的完全数
\/\/求完全数 #include<stdio.h>int sum1(int n){int s=1,i; for(i=2;i<=n\/2;i++) if(n%i==0)s+=i; return s; }int main(){ int i,j; for(i=2;i<10000;i++) if(sum1(i)==i) {printf("%d=1",i); for(j=2;j<=i\/2;j++) if(i%j==0...
用c语言编写超级素数(1000——10000)
if(prime(i)==0) return 0; } while(i>=10); return 1; } else return 0; } void main() \/*求100~9999之间所有的超级素数个数,和,及最大值*\/ { int i,spn=0,spm; long sps=0; for(i=101;i<=9997;i+=2) if(IsSuperPrime(i)==1){ sps+=i; spn++; spm=i; } printf...
易语言,怎样把计算结果比方说,10000换成10K,10000K换成10兆??谢谢
先判断结果是否有【K】,如有,去掉K后再判断是否大于三位数,如是,除以1000,将【K】,替换为【M,即兆】如无,判断结果是否超过三位数,如有,则除以1000后面单位加【K】,
请用Java语言编写代码,找出1-10000之间所有的自守数并输出
int i,j;for(i=5;i<=10000;i++){ j=i*i;if(i<10) if(i==j%10)System.out.println(i);if(i>9&&i<100) if(i==j%100)System.out.println(i);if(i>99&&i<1000)if(i==j%1000)System.out.println(i);if(i>999)if(i==j%10000)System.out.println(i);} ...
一个c语言的题目:
我来 很快 12345 您输入的数万位是:1,千位是:2,百位是:3,十位是:4,个位是:5。Press any key to continue include "stdio.h"main(){ int num,a,b,c,d,e; \/\/定义输入数字,各个位的参数 scanf("%d",&num); \/\/输入数字 a=num\/10000; \/\/万位 b=num%10000\/1000;...
C语言输出1~10000之间所有的次方数
include "iostream"include <math.h> int pri(int n){ int i;for(i=2;i<int(sqrt(n)+1);++i)if(n%i==0)break;if (i==int(sqrt(n))+1)return (1);return (0);} void main(){ int i;for (i=2;i<10000;++i)if (pri(i))printf("%8d",i);} ...
用C语言解答:输出1000到10000之间所有个位+千位=十位+百位的数, 急求...
include<stdio.h> int main(){ int i;for(i=1000;i<=10000;i++){ int g,s,b,q,temp;temp=i;g=temp%10;\/\/个位 temp\/=10;s=temp%10;\/\/十位 temp\/=10;b=temp%10;\/\/百位 temp\/=10;q=temp%10;\/\/千位 temp\/=10;if(g+q==s+b)printf("%d\\n",i);} return 0;} ...
c语言求解题目1:找出1-10000里各个位含有数字1的整数,并统计数量。_百 ...
include <stdio.h> include <string.h> main(int argc,char * argv[]){ int len;int i,j;char data[6];for(i=1;i<=10000;i++){ sprintf(data,"%d",i);len=strlen(data);if(data[len-1]=='1'){ printf("%d,",i);} } printf("\\n");} ...
求出1——10000的史密斯数,用c语言实现
int chg(int x) \/*把此数各位数字进行相加*\/ { int sum=0;while(x>10){ sum+=(x%10);x\/=10;} sum+=x;return sum;} int zys(int x) \/*求质因数的和*\/ { int i,sum=0,y=x;for(i=2;i<=x;i++)if(judge(i)&&x%i==0){ if(i==y) return 1;sum+=chg(i);x\/...
一个C语言的题
include <stdio.h> \/\/ 求1~10000之间所有满足各位数字的立方和等于他本身的数 int main() { int sum,t1,t2,nI = 1;while (nI<=10000) { t1 = nI;sum = 0;do { t2 = t1%10; t1 = t1\/10;sum += t2 * t2 * t2;} while(t1>0);if (sum == nI)printf("%d\\n",sum); ...