【名词解释】
在一行上输入一个整数
。
第一行输出若干个整数,表示
以内的全部素数,用空格分隔。
第二行输出一个整数,表示被置为
的整数个数。
20
2 3 5 7 11 13 17 19 11
#include <stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int arr[100] = { 0 };
for (int i = 0;i < n - 1;i++)
{
static int j = 2;
if (j <= n)
{
arr[i] = j;
j++;
}
else {
break;
}
}
int count = 0;
for (int k = 0;k < n - 1;k++)
{
if (arr[k] != 0)
{
for (int l = k + 1;l < n - 1;l++)
{
if ((arr[l] % arr[k] == 0) && arr[l] != 0)
{
arr[l] = 0;
count++;
}
}
}
}
for (int c = 0;c < n - 1;c++)
{
if (arr[c] != 0)
{
printf("%d ", arr[c]);
}
}
printf("\n");
printf("%d", count);
return 0;
} int main()
{
int n = 0;
scanf("%d", &n);
int arr[100] = { 0 };
int i = 0;
int count = 0;
for (i = 0; i < n - 1; i++)
{
arr[i] = i + 2;
}
int j = 0;
for (i = 0; i < n - 1; i++)
{
if (arr[i] != 0 && arr[i] > 2)
{
for (j = 2; j <= n; j++)
{
if (arr[i] % j == 0 && j != arr[i])
{
count++;
arr[i] = 0;
break;
}
}
}
}
for (i = 0; i < n - 1; i++)
{
if (arr[i] != 0)
{
printf("%d ", arr[i]);
}
}
printf("\n%d\n", count);
return 0;
} #include<stdio.h>
void Generate(int arr[],int n)
{
int i = 0;
int j = 0;
for(i=2;i<=n;i++)
{
arr[j]=i;
j++;
}
}
int Calculate(int arr[],int n)
{
int i = 0;
int j = 0;
int count = 0;
for(i=2;i<=n;i++)
{
for(j=i-1;j<n-1;j++)
{
if(arr[j]%i==0)
{
arr[j]=0;
}
}
}
for(i=0;i<n-1;i++)
{
if(arr[i]==0)
count++;
}
return count;
}
void My_printf(int arr[],int n,int count)
{
int i = 0;
for(i = 0;i<n-1;i++)
{
if(arr[i]!=0)
{
printf("%d ",arr[i]);
}
}
printf("\n");
printf("%d ",count);
}
int main()
{
int n = 0;
int arr[100];
while(scanf("%d\n",&n)!=EOF)
{
Generate(arr,n);
int count = Calculate(arr,n);
My_printf(arr,n,count);
}
} #include <stdio.h>
#include <math.h>
int main() {
int n, num = 0;
scanf("%d", &n);
int i = 0, j = 0;
for (i = 2; i <= n; i++) {
for (j = 2; j <= sqrt(i); j++) {
if (i % j == 0) break;
}
if (j > sqrt(i)) {
printf("%d ", i);
num++;
}
}
printf("\n%d", n - num - 1);
return 0;
} //通过在向数组输入数据的过程中,进行是否为素数判断,保证数组(素数位)输入的是0
#include <stdio.h>
//函数:判断i是否位素数
int chick(int i){
for (int j = 2; j < i; j++) {
if (i%j == 0) {
return 1;
}
}
return 0;
}
int main() {
int n, count = 0;
scanf("%d",&n);
int a[n];
//向数组中写入数据,同时调用chick()判断需要输入0的位置
for (int i = 2; i <= n; i++) {
if (chick(i)) {
a[i] = 0;
count++;
}else {
a[i] = i;
}
}
//输出
for (int i = 2; i <= n; i++) {
if (a[i] == i) {
printf("%d ",i);
}
}
printf("\n%d",count);
return 0;
} #include <stdio.h>
int main() {
int n = 0;
while(scanf("%d", &n) != EOF)
{
int count = 0;
for (int i = 2; i < n; i++)
{
int m = 0;
for (int j = 2; j < i; j++)
{
if(i % j == 0)
{
count++;
m++;
break;
}
}
if(m==0)
{
printf("%d ", i);
}
}
printf("\n%d ", count + 1);
}
return 0;
} #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool IsPrime(int n)
{
int flag = 0;
//2是特殊的一个素数
for(int i = 2; i < n - 1; i++)
{
if(n % i == 0 && n != 2)
{
flag++;
break;
}
}
return flag == 0;
}
void Distincy(int n)
{
int count =0;
for(int i = 2; i <= n; i++)
{
//a[i]不是素数,或者不是
int tmp = i;
if(!IsPrime(tmp))
{
tmp = 0;
count++;
}
//不是素数已经为0,不为零的是素数
if(tmp != 0)
printf("%d ", tmp);
}
printf("\n");
printf("%d", count);
}
int main()
{
int n;
scanf("%d", &n);
Distincy(n);
return 0;
} #include <stdio.h>
#include <math.h>
int main()
{
int n = 0;
int i = 0;
int j = 0;
int flag = 0;
int count = 0;
while (scanf("%d", &n) != EOF)
{
for(i = 2; i <= n; i++)
{
flag = 1;
for(j = 2; j <= sqrt(i); j++)
{
//不是素数
if(i % j == 0)
{
flag = 0;
}
}
//是素数
if(flag)
{
printf("%d ", i);
count++;
}
}
//不是素数的数量
printf("\n%d\n", n - count - 1);//从2清零开始,所以要-1
}
return 0;
} #include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int arr[n+1];
for(int i=2; i<=n; i++){
arr[i]=i;
}
//输入
int sum=0;
printf("2 3 5 7 ");
for(int i=2; i<=n; i++){
if(arr[i]%2 == 0){
arr[i] = 0;
sum++;
}else if(arr[i]%3 == 0){
arr[i] = 0;
sum++;
}else if(arr[i]%5 == 0){
arr[i] = 0;
sum++;
}else if(arr[i]%7 == 0){
arr[i] = 0;
sum++;
}else{
printf("%d ", arr[i]);
}
}
printf("\n%d\n", sum-4);
return 0;
} #include <stdio.h>
int main() {
int n = 0;
while (scanf("%d", &n) != EOF) {
int arr[101];
int i = 0;
//存储数据
for (i = 2; i <= n; i++) {
arr[i] = i;
}
int j = 0;
for (j = 2; j <= n; j++) {
int k = 0;
for (k = j + 1; k <= n; k++) {
if (arr[k] % j == 0) {
arr[k] = 0;
}
}
}
int count = 0;
for (i = 2; i <= n; i++) {
if (arr[i] != 0)
printf("%d ", arr[i]);
else
count++;
}
printf("\n%d\n", count);
}
return 0;
}
#include <stdio.h>
int main()
{
int n;
while(scanf("%d\n",&n) != EOF)
{
int i,pm;
int arr[n];
for(i=0;i<n;i++)
{
arr[i] = i+1;//将1~n之间的数赋值给arr
}
int count = 0;
for(i=2;i<n;i++)
{
int j;
for(j=i;j<n;j++)
{
if(i != 0&&arr[j]%i == 0)//拿i%j,整除的就赋值为零
{
arr[j] = 0;
}
}
if(arr[i] == 0)//如果arr[i]被赋值为零,个数加一
{
count++;
}
}
for(i=1;i<n;i++)//打印二及其之后的数
{
if(arr[i] != 0)//取其不为零的数
{
printf("%d ",arr[i]);
}
}
printf("\n%d",count);//先换行再打印
}
return 0;
}