用随机函数产生200个四位数整数,求满足千位、百位、十位、个位之和为素数的个数。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int sushu(int a){
int i,flag = 1;//默认a是素数
for(i=2;i<a;i++){
if(a % i == 0){
flag = 0;//表示a不是素数
break;
}
}
return flag;
}
int main()
{
int i,a,cnt=0;
int b,c,d,f;
int arr[200],t[200];
srand(time(NULL));
for(i=0;i<200;i++)
{
a = rand()%8999+1000;
arr[i] = a;
b = a/1000;
c = a/100%10;
d = a/10%10;
f = a%10;
//个位数之和
t[i] = b+c+d+f;
if(sushu(t[i])){
cnt++;
printf("%d\t",t[i]);
}
}
printf("\n素数的个数是%d",cnt);
return 0;
}
分别分解出四个位求和,然后整个素数判断函数
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int isprime(int n)
{
int i;
if(n<=1)
return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i,n,a,b,c,d,count=0;
srand(time(NULL));
for(i=0;i<200;i++)
{
n = rand()%9000+1000;
a = n%10;
b = n/10%10;
c = n/100%10;
d = n/1000;
if(isprime(a+b+c+d))
count++;
}
printf("%d",count);
return 0;
}
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,n,j,s;
int cnt = 0;
srand((unsigned int)time(NULL));
i=0;
while(i<200)
{
n = rand()%1000+(rand()%9+1)*1000; //生成随机四位数
s=0;
//求各位数字置和
while(n)
{
s += n%10;
n/=10;
}
for(j=2;j<s;j++)
{
if(s%j==0)
break;
}
if(j==s)
cnt++;
i++;
}
printf("%d",cnt);
return 0;
}