輸入一個整數n,求小於這個整數的所有質數。
演算法:定義一個長度為n的boolean陣列,true表示是質數,false表示不是質數。初始化為true,之後從2開始迴圈。
步驟:
I、找到第一個值為true的下標i。
II、把所有的下標為i的倍數的值 置為false。
III、直到掃描完陣列中的所有數值。
IV、最後遍歷陣列,如果下標i的值為true,則說明i為質數。
import java.util.Scanner; /** * * @author LLJ * 列印比n小的質數 */ public class ZhiShu5_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個整數n:"); int n = sc.nextInt(); boolean[] b = new boolean[n+1];//初始化一個數組(boolean型別) for(int i = 0;i < b.length;i++){//初始化,所有值都為true b[i]=true; } for(int j = 2;j < b.length;j++){//進行b.length輪篩選 if(b[j]){//j為true,也就是b[j]為質數 //把j的倍數設為false(因為一個數如果是質數,那它的倍數一定不是質數) for(int k = j*2;k < b.length;k+=j){ b[k]=false; } }else{//否則,重新迴圈 continue; } } //遍歷陣列 for(int z = 2;z < b.length;z++){ if(b[z]){//如果b[z]為true,則輸出質數z System.out.print(z + "\t"); // System.out.print(b[z] + "\t");//測試,列印此元素是否是質數 } } } }
相關推薦
輸入一個整數n,求小於這個整數的所有質數。
演算法:定義一個長度為n的boolean陣列,true表示是質數,false表示不是質數。初始化為true,之後從2開始迴圈。步驟: I、找到第一個值為true的下標i。 II、把所有的下標為i的倍數的值 置為false。 III、直到掃描完陣列中的所有數值
輸入一個自然數n,求小於等於n的素數之和
程式碼如下 #include<stdio.h> #include<math.h> int panduan(int i) { int n=2,p=1; if(i==2||i==3) return 1; while(n<=sqrt(i)) {
【C語言】輸入一個整數N,求N以內的素數之和
【C語言】輸入一個整數N,求N以內的素數之和 /* ============================================================================ Name
從鍵盤中輸入一個整數n,求1-n的和,以及偶數和、奇數和
n=int(input("從鍵盤中輸入一個數:")) sum1=0 sum2=0 sum3=0 i=1 while i<=n: sum1+=i if i%2==0: sum2+=i else:
劍指offer第32題JS演算法:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次
題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次 這是我某一次去朋友公司面試試水時出的面試題,結果給我五分鐘我寫了個for迴圈的方法,被狠狠鄙視/哭笑不得 結果回來後好奇就跟同事
輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是double
返回值 %d time data body 一個 pow color printf 題目描述 輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是d
給定一個正整數n,求出0到n中有幾個數滿足其二進位制表示不包含連續的1
樣例: 輸入:5 輸出:5 0 01 10 100 101滿足,11不滿足。 那麼6144呢? 答案是610,怎麼去計算呢? 思路:查詢從0到n中有多少個數包含連續的1,然後在總數中去掉這些情況,得到
【程式設計之美】任意給定一個32位無符號整數n,求n的二進位制表示中1的個數
任意給定一個32位無符號整數n,求n的二進位制表示中1的個數,比如n = 5(0101)時,返回2,n = 15(1111)時,返回4。這也是一道比較經典的題目了,相信不少人面試的時候可能遇到過這道題吧,我今天就遇到了,當時懵了。現在想想多簡單,浪費了一次機會。 1.普通法
給一個正整數n,求出位數。並按正序輸出,逆序輸出
求出位數通過讓給定的正整數n整除10,且每整除一次讓統計位數的變數count自增一,返回count得到位數。#include<stdio.h> int GetFigure(int n) { int count=0; do { count ++;
任意給定一個正整數N,求一個最小的正整數M(M>1),使得N*M的十進位制表示形式裡只含有1和0。
解決這個問題首先考慮對於任意的N,是否這樣的M一定存在。可以證明,M是一定存在的,而且不唯一。 簡單證明:因為 這是一個無窮數列,但是數列中的每一項取值範圍都在[0, N-1]之間。所以這個無窮數列中間必定存在迴圈節。即假設有s,t均是正整數,且s<t,有 。於是迴圈節長度為t-s。於是10
sum=2+5+8+11+14+…,輸入正整數n,求sum的前n項和。
#include<iostream> using namespace std; int main() { int sum=0,a=2,n,i; cin>>n;
(c++)sum=2+5+8+11+14+…,輸入正整數n,求sum的前n項和。
好吧,只是一個很簡單的等差數列求和公式,然而還是由於強迫症,貼了上來..... #include<iostream> using namespace std; int main()
輸入一個奇數n,打印出一個n*n的矩陣,每個數字是從1到n*n的整數,要使每一行,每一列的數字之和都相等
#include<stdio.h> int a[1000][1000]; int main() { int n,i,j; scanf("%d",&n); a[0][n/2]=1; for(i=0;i>n;i++){
騰訊筆試題——用1,1,2,2,4,4,8,8...2^i,2^i拼湊成一個整數n,求問多少種拼湊方法
用1,1,2,2,4,4,8,8…2^i,2^i拼湊成一個整數n,求問多少種拼湊方法 話不多說,上程式碼: #include<iostream> #include<math.h> #include<time.h> #i
輸入一個數字n,列印1到n位數的最大值。eg:n=3,代表列印1-999之間的數字
相關解決: package com.swordRefersToOffer; import java.util.Arrays; /** * @author 凌龍 * @date 2018/9/28 */ public class Test { public
輸入一個正數n,輸出所有和為n的連續正數序列。
public class b { public static void main(String[] args) { getlx(15); } private static void getlx(int n) { //定義最小序列 int min = 1;
C++課後練習——從鍵盤輸入一組非0整數,以輸入0標誌結束,求這組整數的平均值, 並統計其中正數和負數的個數。
從鍵盤輸入一組非0整數,以輸入0標誌結束,求這組整數的平均值, 並統計其中正數和負數的個數。 #include <iostream> using namespace std; void m
輸入一個連結串列,從頭到尾列印連結串列的值。
題目:輸入一個連結串列,從頭到尾列印連結串列的值題意分析:從頭到尾列印連結串列的值,即逆序列印連結串列。 思路: step1:輸入連結串列 step2:我們可以利用ArrayList容器來對連結串列中的資料來進行儲存
如何得到一個命名空間,或者接口中的所有類。
com 追溯 一起 塵埃 ofo 復雜 回復 做到 回顧 <p> 至夜,清醒;軟弱焦灼、 無法表達 便勉強撐起,嘴角上揚; 於是大片的軟弱暴露在!這清早的光中, 赤裸清晰、帶著可笑、、 前行,卻不知邁出左腳或是右腳、 原地,只能張望 以為,只是在自己給自己講童
求階乘,輸入一個正整數 n,輸出n!
factor i++ print 階乘 pri tor n) printf main #include<stdio.h>int factorial (int n); int main(){ int n; scanf("%d",&n); printf("